From 07eafc9a08e4185e846bdaadc6f90645f3a08810 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Fri, 18 Aug 2017 19:09:15 +0200 Subject: [PATCH 1/2] fix limit for the TSS --- arch/x86/kernel/gdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/gdt.c b/arch/x86/kernel/gdt.c index 2eca34564..8c1149c9f 100644 --- a/arch/x86/kernel/gdt.c +++ b/arch/x86/kernel/gdt.c @@ -153,7 +153,7 @@ void gdt_install(void) task_state_segments[i].ist3 = (size_t) stack_table[i] + (3 /*IST number */ - 1) * KERNEL_STACK_SIZE - 0x10; task_state_segments[i].ist4 = (size_t) stack_table[i] + (4 /*IST number */ - 1) * KERNEL_STACK_SIZE - 0x10; - gdt_set_gate(num+i*2, (unsigned long) (task_state_segments+i), sizeof(tss_t)-1, + gdt_set_gate(num+i*2, (unsigned long) (task_state_segments+i), sizeof(tss_t), GDT_FLAG_PRESENT | GDT_FLAG_TSS | GDT_FLAG_RING0, 0); } From dfa27cb3c100a4267ea4268eeb91871becdbfd4c Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sat, 19 Aug 2017 19:36:51 +0200 Subject: [PATCH 2/2] set selectors to kernel data segment --- arch/x86/kernel/entry.asm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/entry.asm b/arch/x86/kernel/entry.asm index 6375533da..fadc21c3d 100644 --- a/arch/x86/kernel/entry.asm +++ b/arch/x86/kernel/entry.asm @@ -121,10 +121,11 @@ SECTION .ktext align 4 start64: ; reset registers to kill any stale realmode selectors - xor eax, eax + mov eax, 0x10 mov ds, eax mov ss, eax mov es, eax + xor eax, eax mov fs, eax mov gs, eax