From f6858b7333139441215e83e070e098bf09056762 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Tue, 19 Jun 2018 05:22:54 +1000 Subject: Added foundation code to initialize the PIT and create a 10ms jiffies counter. --- kernel/timer.s | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 kernel/timer.s (limited to 'kernel/timer.s') diff --git a/kernel/timer.s b/kernel/timer.s new file mode 100644 index 0000000..de01ea6 --- /dev/null +++ b/kernel/timer.s @@ -0,0 +1,34 @@ +global timer_init +extern register_isr + +; TODO: move this someplace safe (not kmain.c) +extern ticks + +tick_handler: + push ax + inc dword [ticks] + mov al, 0x20 + out 0x20, al + pop ax + iret + +timer_init: + push ebp + mov ebp, esp + ; register the tick_handler + push tick_handler + push dword 0x20 + call register_isr + add esp, 8 + ; initialize the pit + mov ax, 0x36 + out 0x43, al + mov ax, 0x2E9C ; 10ms tick interval + out 0x40, al + mov al, ah + out 0x40, al + in al, 0x21 + and al, 0xFE + out 0x21, al + pop ebp + ret -- cgit v1.3