summaryrefslogtreecommitdiff
path: root/kernel/src/cpu/tss.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/cpu/tss.c')
-rw-r--r--kernel/src/cpu/tss.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/src/cpu/tss.c b/kernel/src/cpu/tss.c
index c7f9dc2..843c114 100644
--- a/kernel/src/cpu/tss.c
+++ b/kernel/src/cpu/tss.c
@@ -1,15 +1,22 @@
#include <tss.h>
+#include <heap.h>
+#include <libk/stdio.h>
tss_type tss;
void load_tss()
{
- __asm__ volatile ("mov $0x28, %ax; ltr %ax;");
+ __asm__ volatile ("push %rax; mov $0x28, %ax; ltr %ax; pop %rax;");
}
void init_tss()
{
tss.iopb = sizeof(tss_type);
+ uint64_t stack = (uint64_t)kalloc(4096*4);
+ stack = (uint64_t)kalloc(4096*4) + 8;
+ tss.rsp0_low = (uint32_t)stack;
+ tss.rsp0_high = (uint32_t)(stack >> 32);
load_tss();
+ printf("rsp0 addr in tss: 0x%x\n", stack);
}