diff options
| author | Miguel <m.i@gmx.at> | 2018-09-10 19:08:04 +0200 |
|---|---|---|
| committer | Miguel <m.i@gmx.at> | 2018-09-10 19:08:04 +0200 |
| commit | ee2ec6abbcfb6de48a8f5594e05ba0a837216fa8 (patch) | |
| tree | 6173e5182459529ac5dc3fbb59b30fd37c5ee4ab /kernel/kernel.c | |
| parent | 65f5cca027af81e77b3e06da658b6d13f1861a03 (diff) | |
apic et al.
Diffstat (limited to 'kernel/kernel.c')
| -rw-r--r-- | kernel/kernel.c | 14 |
1 files changed, 14 insertions, 0 deletions
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 |
