From a7ca82133bcb8139bb9d11aa717657ef42ab6cfe Mon Sep 17 00:00:00 2001 From: Miguel Date: Mon, 10 Sep 2018 22:31:48 +0200 Subject: fixed bug in asm_pit_rate_ --- kernel/apic.c | 3 +++ kernel/apic.h | 4 ++-- kernel/interrupts.c | 1 + kernel/kernel.c | 8 ++++++-- 4 files changed, 12 insertions(+), 4 deletions(-) (limited to 'kernel') diff --git a/kernel/apic.c b/kernel/apic.c index a670208..a90cbf6 100644 --- a/kernel/apic.c +++ b/kernel/apic.c @@ -147,6 +147,9 @@ void ioapic_config() // PIT irq 00 -> 02 flags 0 -> 0x90 // kb irq 01 -> 01 flags ? -> 0x91 // mouse irq 12 -> 12 flags ? -> 0x92 +// ioapic_config_entry(2,0x90|0x2000,0x3<<24); // egde trigger on falling +// ioapic_config_entry(2,0x90|0x8000,0x3<<24); // level trigger on high +// ioapic_config_entry(2,0x90|0xa000,0x3<<24); // level trigger on low ioapic_config_entry(2,0x90,0x0); ioapic_config_entry(1,0x91,0x0); ioapic_config_entry(12,0x92,0x0); diff --git a/kernel/apic.h b/kernel/apic.h index 2c76379..0ba2844 100644 --- a/kernel/apic.h +++ b/kernel/apic.h @@ -38,7 +38,7 @@ void apic_enable(); void apic_init_timer(uint32_t ticks_per_second); /** startup other cpu - * @dest destination apic - * @addy entrypoint (example 0x7->0x7000 etc..) + * @param dest destination apic + * @param addy entrypoint (example 0x7->0x7000 etc..) * */ void apic_sipi(uint32_t dest,uint32_t addy); diff --git a/kernel/interrupts.c b/kernel/interrupts.c index 9ffd7c6..6e9d943 100644 --- a/kernel/interrupts.c +++ b/kernel/interrupts.c @@ -54,6 +54,7 @@ uint32_t interrupt_handler(uint32_t esp, uint32_t irq) // klog("int: %d on 0x%x",irq,apicID()); if(irq==INTERRUPT_PIT_TIMER){ asm_pit_tick(); +// asm_pit_sleep_40ms(); // return esp; // tried to skip EOI } diff --git a/kernel/kernel.c b/kernel/kernel.c index 4c7227b..ccc7446 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -29,6 +29,7 @@ #include "fs/fs.h" #include "kmalloc.h" #include "driver/vesa.h" +#include "asm_pit.h" /* F00L 0S Entry point (called directly from asm/multiboot.asm */ void kernel_main(uint32_t eax,uint32_t ebx) @@ -132,11 +133,14 @@ void kernel_main(uint32_t eax,uint32_t ebx) klog("Unlock application processors ... "); asm_smp_unlock(); - PutFont('X', 100,200, 0x00ffff,0xff00ff); // TODO temporary! + //PutFont('X', 100,200, 0x00ffff,0xff00ff); // TODO temporary! klog("Enable Interrupts ... "); x86_sti(); // this will start processing hardware interrupts // now just wait until our scheduler kicks in. - while(1)asm("hlt"); + while(1){ + asm("hlt"); + PutString("pit cnt: %d",10,10,0xff00ff,asm_pit_get_ticks()/25); + } } -- cgit v1.2.3