提交 1b331eee 编写于 作者: P Peter Zijlstra 提交者: Borislav Petkov

x86/entry: Remove skip_r11rcx

Yes, r11 and rcx have been restored previously, but since they're being
popped anyway (into rsi) might as well pop them into their own regs --
setting them to the value they already are.

Less magical code.
Signed-off-by: NPeter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: NBorislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20220506121631.365070674@infradead.org
上级 8c42819b
...@@ -120,27 +120,19 @@ For 32-bit we have the following conventions - kernel is built with ...@@ -120,27 +120,19 @@ For 32-bit we have the following conventions - kernel is built with
CLEAR_REGS CLEAR_REGS
.endm .endm
.macro POP_REGS pop_rdi=1 skip_r11rcx=0 .macro POP_REGS pop_rdi=1
popq %r15 popq %r15
popq %r14 popq %r14
popq %r13 popq %r13
popq %r12 popq %r12
popq %rbp popq %rbp
popq %rbx popq %rbx
.if \skip_r11rcx
popq %rsi
.else
popq %r11 popq %r11
.endif
popq %r10 popq %r10
popq %r9 popq %r9
popq %r8 popq %r8
popq %rax popq %rax
.if \skip_r11rcx
popq %rsi
.else
popq %rcx popq %rcx
.endif
popq %rdx popq %rdx
popq %rsi popq %rsi
.if \pop_rdi .if \pop_rdi
......
...@@ -191,8 +191,7 @@ SYM_INNER_LABEL(entry_SYSCALL_64_after_hwframe, SYM_L_GLOBAL) ...@@ -191,8 +191,7 @@ SYM_INNER_LABEL(entry_SYSCALL_64_after_hwframe, SYM_L_GLOBAL)
* perf profiles. Nothing jumps here. * perf profiles. Nothing jumps here.
*/ */
syscall_return_via_sysret: syscall_return_via_sysret:
/* rcx and r11 are already restored (see code above) */ POP_REGS pop_rdi=0
POP_REGS pop_rdi=0 skip_r11rcx=1
/* /*
* Now all regs are restored except RSP and RDI. * Now all regs are restored except RSP and RDI.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册