diff options
Diffstat (limited to 'kernel/src/cpu/tss.c')
| -rw-r--r-- | kernel/src/cpu/tss.c | 9 |
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); } |
