diff --git a/kernel/kernel.c b/kernel/kernel.c index 46f7f8d..c830fcc 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -20,69 +20,17 @@ void gdb_end() {} /* GDB Debugging stump */ -int kernel_main(void) { +int kernel_main(FILELOADER_PARAMS* FLOP) { /* The kernel is started in 64-bit Long Mode by Syncboot. */ /* Here, we start by drawing a splash, then loading a GDT and IDT into the placeholder UEFI gives us. */ /* Not sure how well serial would work in UEFI. */ // TODO: look at this. + PrepareSystem(FLOP); - //init_serial(); - //serial_print(0x3F8, "[INFO] Serial ready.\r\n"); - - - //serial_print(0x3F8, "[INFO] Beginning GDT subroutine.\r\n"); - - /* term_writes: writes a string to the terminal. */ - //term_writes("GDT..."); - - /* Prepares the Global Descriptor Table, called from gdt.c */ - gdt_install(); - - /* puts: writes a line to the terminal. */ - //puts("GDT Ready."); - //serial_print(0x3F8, "[INFO] GDT subroutine complete.\r\n"); - - /* Prepare the Interrupt Descriptor Table. */ - //serial_print(0x3F8, "[INFO] Beginning IDT subroutine.\r\n"); - //term_writes("IDT..."); - idt_install(); - //puts("IDT Ready."); - //serial_print(0x3F8, "[INFO] IDT subroutine complete.\r\n[INFO] Enabling interrupts.\r\n"); - gdb_end(); /* The first important step. Waypoint it for gdb debugging. */ - //term_writes("Memory available:"); - - /* The first important thing: start the system clock immediately. */ - //serial_print(0x3F8, "[INFO] Starting System Clock.\r\n"); - //term_writes("Timer..."); - timer_install(); - //puts("Timer Ready."); - - //serial_print(0x3F8, "[INFO] All subsystems ready. Printing message.\r\n"); - - /* Everything is ready; print a pretty message. */ - //term_setcolor(RED); - //term_writes("\n(c)"); - //term_setcolor(GREEN); - //term_writes(" Sync"); - //term_setcolor(WHITE); - //term_writes(", 2019\n"); - - //serial_print(0x3F8, "[INFO] All operations complete. Checking for other tasks...\r\n"); - - /* Here are a series of tests for the ANSI escape code and CSI implementations. */ - //term_writes("\x1b[BA"); /* Down a line, then A. */ - - - /* A stub causing a Divide by Zero error. */ - //serial_print(0x3F8, "[DEBUG] Attempting a Divide by Zero error.\r\n"); - //char div = (5 / 0); - //serial_print(0x3F8, "[DEBUG] Survived the error!\r\n"); - - gdb_end(); /* Everything is done. The last debug routine. */ return 0; } diff --git a/kernel/utils.c b/kernel/utils.c index bc2de7a..7d04b57 100644 --- a/kernel/utils.c +++ b/kernel/utils.c @@ -11,12 +11,7 @@ * permanent solution can be found. */ -#include -#include -#include -#include -#include -#include +#include /* Returns the length of a given string. @@ -192,8 +187,7 @@ void empty_string(char* string) { * @param cause: A string, telling the basic reason for the crash. */ void panic(char* cause) { - term_writes("\n\n>>>> PANIC <<<<\nCaused by: "); - term_writes(cause); + printf("Kernel Halted."); for(;;);