|
@@ -334,15 +334,7 @@ GLOBAL(entry_SYSCALL_64_after_hwframe)
|
|
|
syscall_return_via_sysret:
|
|
|
/* rcx and r11 are already restored (see code above) */
|
|
|
UNWIND_HINT_EMPTY
|
|
|
- POP_EXTRA_REGS
|
|
|
- popq %rsi /* skip r11 */
|
|
|
- popq %r10
|
|
|
- popq %r9
|
|
|
- popq %r8
|
|
|
- popq %rax
|
|
|
- popq %rsi /* skip rcx */
|
|
|
- popq %rdx
|
|
|
- popq %rsi
|
|
|
+ POP_REGS pop_rdi=0 skip_r11rcx=1
|
|
|
|
|
|
/*
|
|
|
* Now all regs are restored except RSP and RDI.
|
|
@@ -635,15 +627,7 @@ GLOBAL(swapgs_restore_regs_and_return_to_usermode)
|
|
|
ud2
|
|
|
1:
|
|
|
#endif
|
|
|
- POP_EXTRA_REGS
|
|
|
- popq %r11
|
|
|
- popq %r10
|
|
|
- popq %r9
|
|
|
- popq %r8
|
|
|
- popq %rax
|
|
|
- popq %rcx
|
|
|
- popq %rdx
|
|
|
- popq %rsi
|
|
|
+ POP_REGS pop_rdi=0
|
|
|
|
|
|
/*
|
|
|
* The stack is now user RDI, orig_ax, RIP, CS, EFLAGS, RSP, SS.
|
|
@@ -701,8 +685,7 @@ GLOBAL(restore_regs_and_return_to_kernel)
|
|
|
ud2
|
|
|
1:
|
|
|
#endif
|
|
|
- POP_EXTRA_REGS
|
|
|
- POP_C_REGS
|
|
|
+ POP_REGS
|
|
|
addq $8, %rsp /* skip regs->orig_ax */
|
|
|
INTERRUPT_RETURN
|
|
|
|
|
@@ -1661,8 +1644,7 @@ end_repeat_nmi:
|
|
|
nmi_swapgs:
|
|
|
SWAPGS_UNSAFE_STACK
|
|
|
nmi_restore:
|
|
|
- POP_EXTRA_REGS
|
|
|
- POP_C_REGS
|
|
|
+ POP_REGS
|
|
|
|
|
|
/*
|
|
|
* Skip orig_ax and the "outermost" frame to point RSP at the "iret"
|