From b3445a17bf2340715d64d205e193807c0153c835 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 9 Oct 2011 12:20:24 +0800 Subject: [PATCH] Kernel/x86_64 - Fixed not resetting IF after SYSCALL entry --- Kernel/arch/x86_64/desctab.asm | 2 ++ Kernel/arch/x86_64/proc.c | 12 ------------ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/Kernel/arch/x86_64/desctab.asm b/Kernel/arch/x86_64/desctab.asm index 2d96180d..8ee4352e 100644 --- a/Kernel/arch/x86_64/desctab.asm +++ b/Kernel/arch/x86_64/desctab.asm @@ -386,6 +386,8 @@ SyscallStub: push rcx ; RIP push r11 ; RFLAGS + sti ; Start interrupts again + ; RDI ; RSI ; RDX diff --git a/Kernel/arch/x86_64/proc.c b/Kernel/arch/x86_64/proc.c index 2d07e1ac..de25c450 100644 --- a/Kernel/arch/x86_64/proc.c +++ b/Kernel/arch/x86_64/proc.c @@ -646,24 +646,12 @@ void Proc_StartProcess(Uint16 SS, Uint Stack, Uint Flags, Uint16 CS, Uint IP) else { // 64-bit return - #if 1 __asm__ __volatile__ ( "mov %0, %%rsp;\n\t" // Set stack pointer "mov %2, %%r11;\n\t" // Set RFLAGS "sysretq;\n\t" : : "r" (Stack), "c" (IP), "r" (Flags) ); - #else - __asm__ __volatile__ ( - "push $0x23;\n\t" // SS - "push %0;\n\t" // RSP - "push %2;\n\t" // Flags - "push $0x2B;\n\t" // CS - "push %1;\n\t" // IP - "iretq" - : : "r" (Stack), "r" (IP), "r" (Flags) - ); - #endif } for(;;); } -- 2.20.1