summaryrefslogtreecommitdiffstats
path: root/include/arch/x86_64
diff options
context:
space:
mode:
Diffstat (limited to 'include/arch/x86_64')
-rw-r--r--include/arch/x86_64/init.h12
-rw-r--r--include/arch/x86_64/tcb.h10
2 files changed, 20 insertions, 2 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