summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/proc/init.c
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-10-09 10:24:41 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-10-09 10:24:41 -0400
commitcc23ea5a4b38807e79aceb23e6f43e965926618f (patch)
tree90142bb44186f4dad7bbd82d3d53655b835c822b /arch/x86_64/proc/init.c
parent434ddcd907832b1febc7d70e4faa52109c7eb3bd (diff)
downloadjove-kernel-cc23ea5a4b38807e79aceb23e6f43e965926618f.tar.gz
jove-kernel-cc23ea5a4b38807e79aceb23e6f43e965926618f.tar.bz2
jove-kernel-cc23ea5a4b38807e79aceb23e6f43e965926618f.zip
add basic scheduler logic. rename init rootdir indexes
Diffstat (limited to 'arch/x86_64/proc/init.c')
-rw-r--r--arch/x86_64/proc/init.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/arch/x86_64/proc/init.c b/arch/x86_64/proc/init.c
index 3787c7b..155cff6 100644
--- a/arch/x86_64/proc/init.c
+++ b/arch/x86_64/proc/init.c
@@ -5,6 +5,7 @@
#include "jove.h"
#include "hal/obj.h"
#include "lib/string.h"
+#include "sys/objdir.h"
#include "panic/panic.h"
#include "lib/printf.h"
#include "arch/x86_64/lib/elf.h"
@@ -50,7 +51,7 @@ init_setup(void)
kpanic("Kernel commandline is missing 'init' arg.\n");
}
- jove_owned_obj_t *initrd_obj = objdir_getlocal(_rootdir_obj, ROOTDIR_INITRD_I);
+ jove_owned_obj_t *initrd_obj = objdir_getlocal(_rootdir_obj, INIT_ROOTDIR_INITRD_I);
jove_owned_obj_t *init_obj = initrd_seek(initrd_obj, init_path);
if(init_obj == NULL) {
kpanic("init: Cannot find file '%s' in initrd.\n", init_path);
@@ -69,7 +70,7 @@ init_setup(void)
kpanic("init: Either passed file '%s' is not an ELF file or is not loadable.\n", init_path);
}
- jove_owned_obj_t *init_pagedir = objdir_getlocal(_rootdir_obj, ROOTDIR_PAGEDIR_I);
+ jove_owned_obj_t *init_pagedir = objdir_getlocal(_rootdir_obj, INIT_ROOTDIR_PAGEDIR_I);
page_t *pml4 = obj_deref(init_pagedir);
size_t last_base = 0;
@@ -133,7 +134,7 @@ init_setup(void)
memcpy((void*)last_base, &_init_payload, sizeof(struct init_payload));
- jove_owned_obj_t *message_obj = objdir_getlocal(_rootdir_obj, ROOTDIR_MESSAGE_I);
+ jove_owned_obj_t *message_obj = objdir_getlocal(_rootdir_obj, INIT_ROOTDIR_MESSAGE_I);
obj_settype(message_obj, JOVE_OBJ_MESSAGE);
obj_setvalue(message_obj, last_base | 1);
obj_release(message_obj);
@@ -144,13 +145,9 @@ init_setup(void)
extern void _syscall_entry(void);
msr_set_lstar(_syscall_entry);
- //Setup KSP for syscalls
- jove_owned_obj_t *pcb_obj = process_current();
- pcb_t *pcb = obj_deref(pcb_obj);
-
- obj_release(pcb_obj);
obj_release(_rootdir_obj);
+ //Setup KSP for syscalls
uintptr_t usp = 0x00007FFFFFFFFFF8;
uintptr_t uip = init_ehdr->e_entry;