diff --git a/Kernel/arch/x86_64/desctab.asm b/Kernel/arch/x86_64/desctab.asm index 2d96180d04c1b4e20491294e399e73d6267a467e..8ee4352e509a54344d6a74794e5b0edaf0d787c7 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 2d07e1ac7f0b8e9e8902a8d95cca36b1c7d2b07a..de25c450ff2619ca7d38a8be616b9acd29cb24bc 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(;;); }