diff options
author | Freya Murphy <freya@freyacat.org> | 2025-04-27 23:19:07 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2025-04-27 23:19:07 -0400 |
commit | 4d6dfd75aeeb5138bdf0b67336dd5eba937ac910 (patch) | |
tree | 1b979149c80e1539156b0c3133256fb2362b5a4c /kernel/cpu/tss.c | |
parent | add register to n param (diff) | |
download | comus-4d6dfd75aeeb5138bdf0b67336dd5eba937ac910.tar.gz comus-4d6dfd75aeeb5138bdf0b67336dd5eba937ac910.tar.bz2 comus-4d6dfd75aeeb5138bdf0b67336dd5eba937ac910.zip |
seperate interrupt stack
Diffstat (limited to '')
-rw-r--r-- | kernel/cpu/tss.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/cpu/tss.c b/kernel/cpu/tss.c index 100525b..184b884 100644 --- a/kernel/cpu/tss.c +++ b/kernel/cpu/tss.c @@ -1,3 +1,4 @@ +#include "comus/memory.h" #include "lib/kstring.h" #include <stdint.h> @@ -47,7 +48,7 @@ extern volatile uint8_t GDT[]; static volatile struct sys_seg_descriptor *GDT_TSS; // kernel stack pointer -extern char kern_stack_end[]; +static char interrupt_stack[PAGE_SIZE*2]; void tss_init(void) { @@ -56,7 +57,7 @@ void tss_init(void) // setup tss entry memsetv(&tss, 0, sizeof(struct tss)); - tss.rsp0 = (uint64_t)kern_stack_end; + tss.rsp0 = (uint64_t)interrupt_stack + sizeof(interrupt_stack); // map tss into gdt GDT_TSS = (volatile struct sys_seg_descriptor *)(GDT + 0x28); |