(timer): basic start

This commit is contained in:
Liam Kerr 2026-02-16 17:41:07 +00:00
parent 44427f7734
commit 537dde170b
3 changed files with 22 additions and 3 deletions

View file

@ -6,6 +6,7 @@
#include <kernel/plic.h>
#include <kernel/interrupts.h>
#include <kernel/memory.h>
#include <kernel/timer.h>
void interrupt_init()
{
@ -115,9 +116,7 @@ void handle_interrupt(unsigned long code)
switch (code)
{
case 7:
static volatile uint64_t *mtime = (uint64_t *)CLINT_MTIME;
static volatile uint64_t *mtimecmp = (uint64_t *)CLINT_MTIMECMP(0);
*mtimecmp = *mtime + 100000;
timer_handle_interrupt();
break;
case 11:

12
src/kernel/timer.c Normal file
View file

@ -0,0 +1,12 @@
#include <stdint.h>
#include <kernel/interrupts.h>
#include <kernel/plic.h>
#include <kernel/timer.h>
void timer_handle_interrupt()
{
static volatile uint64_t *mtime = (uint64_t *)CLINT_MTIME;
static volatile uint64_t *mtimecmp = (uint64_t *)CLINT_MTIMECMP(0);
*mtimecmp = *mtime + TIMER_FREQ;
}

8
src/kernel/timer.h Normal file
View file

@ -0,0 +1,8 @@
#ifndef KTIMER_H
#define KTIMER_H
#define TIMER_FREQ 100000
void timer_handle_interrupt();
#endif