#include "api/init.h" #include "jove.h" #include "proc/init.h" #include "lib/string.h" #include "lib/printf.h" #include "panic/panic.h" #include "../../hal/obj.h" #include "hal/msr.h" #include "hal/serial_com.h" #include "hal/smp.h" #include "hal/memory.h" #include "proc/process.h" #include "boot/boot.h" #include "debug/debug.h" int errno = 0; PAGEALIGN jove_objdir_t _rootdir; void *_rootdir_obj = &_rootdir.entries[INIT_ROOTDIR_DIR_I]; struct init_payload _init_payload; static void kernel_process_entry(void); void kernel_entry(void) { debug_init(); memset(&_rootdir, 0, 0x1000); obj_take(_rootdir_obj); obj_settype(_rootdir_obj, JOVE_OBJ_OBJDIR); obj_setvalue(_rootdir_obj, (uintptr_t)&_rootdir); obj_release(_rootdir_obj); msr_enable_sse(); smp_init_bsp(); mem_setup_modules(); mem_setup_regions(); cmdline_print(); extern void processing_setup(void*); processing_setup(kernel_process_entry); hcf(); } static void kernel_process_entry(void) { init_setup(); kpanic("Reached the end of kernel main!\n"); }