#include "acpi.hpp" #include "gdt.hpp" #include "idt.hpp" #include "keyboard.hpp" #include "memory.hpp" #include "multiboot.hpp" #include "pic.hpp" #include "pit.hpp" #include "portio.hpp" #include "tasking.hpp" #include "vgaterminal.hpp" static VGATerminal vga; TextOutput& term = vga; static volatile bool termBusy = false; void kernel_main(void) { term.write("Clyne's kernel, v2024\n\n"); if (!multiboot_initialize()) for (;;); idt_register_callback(14, [](auto& regs) { term.write("Page fault! eip="); term.write(regs.eip); term.write('\n'); for (;;); }); acpi_initialize(); memory_initialize(); gdt_initialize(); pic_initialize(); idt_initialize(); pit_initialize(); keyboard_initialize(); asm volatile("sti"); tasking_initialize(); term.write("Tasking enabled.\n"); for (;;) { const auto ch = keyboard_read(); if (ch) term.write(*ch); pit_delay_ms(10); } } extern "C" void abort() { term.write("!!! abort() called !!!"); asm volatile("cli"); for (;;); } extern "C" int __cxa_atexit(void (*func)(void *), void *arg, void *dso_handle) { return 0; } int __dso_handle = 0;