summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-10 22:31:48 +0200
committerMiguel <m.i@gmx.at>2018-09-10 22:31:48 +0200
commita7ca82133bcb8139bb9d11aa717657ef42ab6cfe (patch)
treebefef8186e0adb819ae77b9fc89c9a37b900859f /kernel
parentfe83c82693ae231368d1e8c196fb975c3df1dd30 (diff)
fixed bug in asm_pit_rate_
Diffstat (limited to 'kernel')
-rw-r--r--kernel/apic.c3
-rw-r--r--kernel/apic.h4
-rw-r--r--kernel/interrupts.c1
-rw-r--r--kernel/kernel.c8
4 files changed, 12 insertions, 4 deletions
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);
+ }
}