#include "jove.h" #include "init.h" #include "lib/string.h" #include "lib/printf.h" #include "lib/virtterm.h" #include "lib/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 "hal/process.h" #include "hal/uacpi.h" #include "boot/initrd.h" #include "boot/cmdline.h" #include "uacpi/uacpi.h" int errno = 0; PAGEALIGN jove_objdir_t _rootdir; jove_owned_obj_t s_rootdir_obj; void *_rootdir_obj = &s_rootdir_obj; 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) { uacpi_kernel_init(); init_setup(); kpanic("Reached the end of kernel main!\n"); }