From e5e674724ec527c45efaa1622d0e9a1618757ca3 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Wed, 3 Sep 2014 15:26:19 +0200 Subject: system clock --- kernel/kernel.c | 56 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 27 deletions(-) (limited to 'kernel/kernel.c') diff --git a/kernel/kernel.c b/kernel/kernel.c index fdb43ba..40c576a 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -4,6 +4,7 @@ #include "lib/int/stdint.h" #include "lib/bool/bool.h" #include "smp.h" +#include "time.h" /////// // interrupt handler prototypes @@ -45,6 +46,8 @@ void kernel_main(uint32_t initial_stack, int mp) proc=0; + task_system_clock=0; + // move the foolfont and aps code before it gets overwritten! uint8_t *source=0x16600; uint8_t *dest=0x80000; @@ -108,6 +111,32 @@ void kernel_main(uint32_t initial_stack, int mp) timer_init(); + // + // Interrupts + // + + // init and interrupt decriptor table + int_init(0x08); + + // set default interrupts + int_install(); + + // setup some custom interrupts + // remember that we shifted all interrupts with the pic by 32 + + // install PIT interrupt handler (irq 0 => 32) + int_install_ir(32, 0b10001110, 0x08,&int_clock_handler); + + // install keyboard interrupt handler (irq 1 => 33) + int_install_ir(33, 0b10001110, 0x08,&int_kb_handler); + + // install floppy interrupt handler (irq 6 => 38) + //int_install_ir(38, 0b10001110, 0x08,&int_floppy_handler); + + // now we can enable interrupts back again + x86_int_enable(); + + // // Memory Init // @@ -151,33 +180,6 @@ void kernel_main(uint32_t initial_stack, int mp) // paging (pass the vesa physbase address for identity mapping) vmem_init(vesa_physbase); - - - // - // Interrupts - // - - // init and interrupt decriptor table - int_init(0x08); - - // set default interrupts - int_install(); - - // setup some custom interrupts - // remember that we shifted all interrupts with the pic by 32 - - // install PIT interrupt handler (irq 0 => 32) - int_install_ir(32, 0b10001110, 0x08,&int_clock_handler); - - // install keyboard interrupt handler (irq 1 => 33) - int_install_ir(33, 0b10001110, 0x08,&int_kb_handler); - - // install floppy interrupt handler (irq 6 => 38) - //int_install_ir(38, 0b10001110, 0x08,&int_floppy_handler); - - // now we can enable interrupts back again - x86_int_enable(); - ////////////////////// // -- cgit v1.2.3