summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2025-09-11 14:37:04 -0400
committerJon Santmyer <jon@jonsantmyer.com>2025-09-11 14:37:04 -0400
commit42a2bdaecaee627247689b3f4ff2828fe3c8dc97 (patch)
tree17e59594b1979912401eecb05891234e028e8869 /include
parent7f350e7ee1c2c38e5ac0b6c22c17388f6c78f0b5 (diff)
downloadjove-kernel-42a2bdaecaee627247689b3f4ff2828fe3c8dc97.tar.gz
jove-kernel-42a2bdaecaee627247689b3f4ff2828fe3c8dc97.tar.bz2
jove-kernel-42a2bdaecaee627247689b3f4ff2828fe3c8dc97.zip
load init from ELF executable
Diffstat (limited to 'include')
-rw-r--r--include/arch/x86_64/init.h12
-rw-r--r--include/arch/x86_64/tcb.h10
-rw-r--r--include/device/processor.h6
-rw-r--r--include/elf.h6
-rw-r--r--include/init.h3
-rw-r--r--include/memory.h2
-rw-r--r--include/tcb.h2
7 files changed, 28 insertions, 13 deletions
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 <stdint.h>
+
+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 <stdint.h>
+#include <stddef.h>
+
+#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
diff --git a/include/device/processor.h b/include/device/processor.h
index 33deed4..e0ec16c 100644
--- a/include/device/processor.h
+++ b/include/device/processor.h
@@ -1,9 +1,7 @@
#ifndef _JOVE_DEVICE_PROCESSOR_H
#define _JOVE_DEVICE_PROCESSOR_H 1
-#if defined(__x86_64__)
-#include "arch/x86_64/processor.h"
-#endif
+#include "object.h"
/**@FUNC Initialize the bootstrap processor.*/
void bsp_setup(void);
@@ -19,4 +17,6 @@ void processor_setup(void* processor);
* @RET pointer to current processor.*/
void *processor_current(void);
+objdir_t *processor_get_objdir(void *processor);
+
#endif
diff --git a/include/elf.h b/include/elf.h
index 05e3e83..acd0aea 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -89,9 +89,9 @@ typedef struct {
#define PT_NULL 0
#define PT_LOAD 1
-#define PF_X 1
-#define PF_W 2
-#define PF_R 4
+#define PF_X 0x1
+#define PF_W 0x2
+#define PF_R 0x4
typedef struct
{
diff --git a/include/init.h b/include/init.h
index 2174785..fc1361d 100644
--- a/include/init.h
+++ b/include/init.h
@@ -17,9 +17,6 @@ enum {
#include "object.h"
extern objdir_t _initDirectory;
-uintptr_t init_alloc_pageframe();
-void init_map_pageframe(uintptr_t pptr, uintptr_t vptr, uint8_t pflags);
-
void init_load(void);
#endif
diff --git a/include/memory.h b/include/memory.h
index 901060c..3e97bcf 100644
--- a/include/memory.h
+++ b/include/memory.h
@@ -7,8 +7,6 @@
typedef uintptr_t physptr_t;
typedef uintptr_t virtptr_t;
-#define KERNEL_STACK_SIZE 0x1000
-
void mapping_setup_init(void);
void mapping_setup(objdir_entry_t *mapping);
diff --git a/include/tcb.h b/include/tcb.h
index c28a860..511f69e 100644
--- a/include/tcb.h
+++ b/include/tcb.h
@@ -4,6 +4,8 @@
#include <stddef.h>
#include <stdint.h>
+struct jove_ThreadControlBlock;
+void tcb_init(void *task_main);
#endif