From 9655593d80e23d2ea3c091e3187e8e47b278bc3d Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sat, 10 Apr 2021 00:26:39 +0200 Subject: Gave procs own kernel stack (TSS) --- kernel/drivers/cpu.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'kernel/drivers/cpu.c') diff --git a/kernel/drivers/cpu.c b/kernel/drivers/cpu.c index 5d53bef..62b0328 100644 --- a/kernel/drivers/cpu.c +++ b/kernel/drivers/cpu.c @@ -91,6 +91,19 @@ void fpu_restore(void) __asm__ volatile("fxrstor (%0)" ::"r"(fpu_state)); } +PROTECTED extern u32 tss_entry; +void tss_set_stack(u32 ss, u32 esp) +{ + assert(tss_entry && ss && esp); + struct { + u32 prev; + u32 esp0; + u32 ss0; + } *tss = (void *)tss_entry; + tss->esp0 = esp; + tss->ss0 = ss; +} + CLEAR static struct cpuid cpuid(u32 code) { u32 a, b, c, d; -- cgit v1.2.3