#include "api/init.h" #include "jove.h" #include "proc/init.h" #include "lib/string.h" #include "lib/printf.h" #include "lib/virtterm.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 "hal/framebuffer.h" #include "proc/process.h" #include "boot/initrd.h" #include "boot/cmdline.h" int errno = 0; PAGEALIGN jove_objdir_t _rootdir; void *_rootdir_obj = &_rootdir.entries[ROOTDIR_DIR_I]; struct init_payload _init_payload; static void kernel_process_entry(void); void kernel_entry(void) { memset(&_rootdir, 0, 0x1000); obj_take(_rootdir_obj); obj_settype(_rootdir_obj, JOVE_OBJ_OBJDIR); obj_setvalue(_rootdir_obj, (uintptr_t)&_rootdir); msr_enable_sse(); obj_settype(_rootdir_obj, JOVE_OBJ_OBJDIR); serial_com_init(); smp_init_bsp(); initrd_setup(); fb_init(); vt_init(); cmdline_print(); mem_setup_untyped(); 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"); }