From 42a2bdaecaee627247689b3f4ff2828fe3c8dc97 Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Thu, 11 Sep 2025 14:37:04 -0400 Subject: load init from ELF executable --- include/arch/x86_64/init.h | 12 ++++++++++++ include/arch/x86_64/tcb.h | 10 ++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 include/arch/x86_64/init.h (limited to 'include/arch') diff --git a/include/arch/x86_64/init.h b/include/arch/x86_64/init.h new file mode 100644 index 0000000..d8fdf2c --- /dev/null +++ b/include/arch/x86_64/init.h @@ -0,0 +1,12 @@ +#ifndef _JOVE_x86_64_INIT_H +#define _JOVE_x86_64_INIT_H 1 + +#include + +uintptr_t init_alloc_pageframe(); +void init_map_pageframe(uintptr_t pptr, uintptr_t vptr, uint8_t pflags); + +__attribute__((noreturn)) +void usermode(void *ip, void *sp); + +#endif diff --git a/include/arch/x86_64/tcb.h b/include/arch/x86_64/tcb.h index 33da4fa..ae93bdf 100644 --- a/include/arch/x86_64/tcb.h +++ b/include/arch/x86_64/tcb.h @@ -2,17 +2,23 @@ #define _JOVE_x86_64_TCB_H 1 #include +#include + +#define KERNEL_STACK_MINSIZE 0x1000 typedef struct jove_ThreadControlBlock { - void *stack; + size_t size; + struct jove_ThreadControlBlock *tcb_next, *sched_next; + uint8_t priority; + uintptr_t sp, ksp; void *pml4; void *mailbox; /* PML caching for faster calls?*/ - uint8_t kstack[KERNEL_STACKBYTES]; + uint8_t kstack[]; } tcb_t; #endif -- cgit v1.2.1