summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/main.c
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-09-15 10:03:20 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-09-15 10:03:20 -0400
commita783cc865f1f261c20f6ef55cb37d4839f519865 (patch)
treeeabd6992f3be7c0f4d778a9fba2bfe7173ed6c8c /arch/x86_64/main.c
parent1f4260648f02db1b4fe8c60fe36f936125042880 (diff)
downloadjove-kernel-a783cc865f1f261c20f6ef55cb37d4839f519865.tar.gz
jove-kernel-a783cc865f1f261c20f6ef55cb37d4839f519865.tar.bz2
jove-kernel-a783cc865f1f261c20f6ef55cb37d4839f519865.zip
move constants to api. centralize interrupts. fix rootdir lock hang
Diffstat (limited to 'arch/x86_64/main.c')
-rw-r--r--arch/x86_64/main.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/arch/x86_64/main.c b/arch/x86_64/main.c
index d688fa0..7266155 100644
--- a/arch/x86_64/main.c
+++ b/arch/x86_64/main.c
@@ -1,5 +1,6 @@
#include "jove.h"
#include "init.h"
+#include "lib/string.h"
#include "lib/printf.h"
#include "lib/virtterm.h"
#include "lib/panic.h"
@@ -10,21 +11,28 @@
#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 = { 0 };
+PAGEALIGN jove_objdir_t _rootdir;
-void *_rootdir_obj = &_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);
@@ -49,8 +57,7 @@ kernel_entry(void)
static void
kernel_process_entry(void)
{
- uint8_t uacpi_buffer[1024];
- uacpi_setup_early_table_access(uacpi_buffer, 1024);
+ uacpi_kernel_init();
init_setup();
kpanic("Reached the end of kernel main!\n");