From ee2ec6abbcfb6de48a8f5594e05ba0a837216fa8 Mon Sep 17 00:00:00 2001 From: Miguel Date: Mon, 10 Sep 2018 19:08:04 +0200 Subject: apic et al. --- kernel/kernel.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'kernel/kernel.c') diff --git a/kernel/kernel.c b/kernel/kernel.c index dd8d3f0..4c7227b 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -11,6 +11,7 @@ #include "vmem.h" //-- clean below headers --// +#include "apic.h" #include "kernel/scheduler.h" #include "driver/timer.h" @@ -70,6 +71,13 @@ void kernel_main(uint32_t eax,uint32_t ebx) interrupts_install(); fixme("register interrupt callback funcs (instead hardcoded dispatcher)"); + // -- APIC -- // + klog("Advanced Programmable Interrupt Controller (APIC) config ..."); + apic_init(&cfg_acpi); + ioapic_config(); + apic_enable(); + apic_init_timer(3);// freq in HZ + // -- MEMORY MANAGEMENT -- // klog("Memory init ... "); mem_init(cfg_multiboot); @@ -88,6 +96,10 @@ void kernel_main(uint32_t eax,uint32_t ebx) x86_set_page_directory(dir); x86_paging_enable(); + // temporary TODO + uint32_t *cpu_mem=0x8000000; //1024 pages from here on are mapped per cpu for testing! TODO: dynamic! + *cpu_mem=apic_id(); + // -- RAM IMAGE -- // klog("Ram Filesystem init ... "); fs_mount(cfg_multiboot); @@ -120,6 +132,8 @@ void kernel_main(uint32_t eax,uint32_t ebx) klog("Unlock application processors ... "); asm_smp_unlock(); + PutFont('X', 100,200, 0x00ffff,0xff00ff); // TODO temporary! + klog("Enable Interrupts ... "); x86_sti(); // this will start processing hardware interrupts -- cgit v1.2.3