From 95a8d6fb6f6c9eb2f2be5d9d9dc74a0970dfaa1f Mon Sep 17 00:00:00 2001 From: EnderIce2 Date: Wed, 25 Dec 2024 04:49:01 +0200 Subject: [PATCH] kernel/idt: Fix ExceptionHandlerStub setting fs & gs to 0 Signed-off-by: EnderIce2 --- Kernel/arch/amd64/cpu/idt.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/Kernel/arch/amd64/cpu/idt.cpp b/Kernel/arch/amd64/cpu/idt.cpp index b642361d..3c798c79 100644 --- a/Kernel/arch/amd64/cpu/idt.cpp +++ b/Kernel/arch/amd64/cpu/idt.cpp @@ -139,10 +139,14 @@ namespace InterruptDescriptorTable "pushq %r14\n" "pushq %r15\n" - "movq %ds, %rax\n pushq %rax\n" - "movq %es, %rax\n pushq %rax\n" - "movq %fs, %rax\n pushq %rax\n" - "movq %gs, %rax\n pushq %rax\n" + // "movq %ds, %rax\n pushq %rax\n" + // "movq %es, %rax\n pushq %rax\n" + // "movq %fs, %rax\n pushq %rax\n" + // "movq %gs, %rax\n pushq %rax\n" + "pushq %rax\n" + "pushq %rax\n" + "pushq %rax\n" + "pushq %rax\n" "movq %dr7, %rax\n pushq %rax\n" "movq %dr6, %rax\n pushq %rax\n" @@ -173,10 +177,14 @@ namespace InterruptDescriptorTable "popq %rax\n movq %rax, %dr6\n" "popq %rax\n movq %rax, %dr7\n" - "popq %rax\n movq %rax, %gs\n" - "popq %rax\n movq %rax, %fs\n" - "popq %rax\n movq %rax, %es\n" - "popq %rax\n movq %rax, %ds\n" + "popq %rax\n" + "popq %rax\n" + "popq %rax\n" + "popq %rax\n" + // "popq %rax\n movq %rax, %gs\n" + // "popq %rax\n movq %rax, %fs\n" + // "popq %rax\n movq %rax, %es\n" + // "popq %rax\n movq %rax, %ds\n" "popq %r15\n" "popq %r14\n" @@ -273,13 +281,13 @@ namespace InterruptDescriptorTable /* TODO: Add advanced check so we won't update the cr3 when not needed */ "movq %cr3, %rax\n pushq %rax\n" /* Push opt */ - "pushq %rax\n" /* Push ppt */ + "pushq %rax\n" /* Push ppt */ "movq %rsp, %rdi\n" "call SchedulerInterruptHandler\n" "popq %rax\n movq %rax, %cr3\n" /* Restore to ppt */ - "popq %rax\n" /* Pop opt */ + "popq %rax\n" /* Pop opt */ "popq %r15\n" "popq %r14\n"