mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/entry: Adjust restore_all_xen to hold stack_end in %r14
All other SPEC_CTRL_{ENTRY,EXIT}_* helpers hold stack_end in %r14. Adjust it
for consistency.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
(cherry picked from commit 7aa28849a1)
This commit is contained in:
1 parent
6cc49c355e
commit
19aca8f327
2 files changed
+8
-8
No files matched your search
@@ -656,15 +656,15 @@ restore_all_xen:
|
||||
* Check whether we need to switch to the per-CPU page tables, in
|
||||
* case we return to late PV exit code (from an NMI or #MC).
|
||||
*/
|
||||
GET_STACK_END(bx)
|
||||
cmpb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%rbx)
|
||||
GET_STACK_END(14)
|
||||
cmpb $0, STACK_CPUINFO_FIELD(use_pv_cr3)(%r14)
|
||||
UNLIKELY_START(ne, exit_cr3)
|
||||
mov STACK_CPUINFO_FIELD(pv_cr3)(%rbx), %rax
|
||||
mov STACK_CPUINFO_FIELD(pv_cr3)(%r14), %rax
|
||||
mov %rax, %cr3
|
||||
UNLIKELY_END(exit_cr3)
|
||||
|
||||
/* WARNING! `ret`, `call *`, `jmp *` not safe beyond this point. */
|
||||
SPEC_CTRL_EXIT_TO_XEN /* Req: %rbx=end, Clob: acd */
|
||||
SPEC_CTRL_EXIT_TO_XEN /* Req: %r14=end, Clob: acd */
|
||||
|
||||
RESTORE_ALL adj=8
|
||||
iretq
|
||||
|
||||
@@ -362,10 +362,10 @@ UNLIKELY_DISPATCH_LABEL(\@_serialise):
|
||||
*/
|
||||
.macro SPEC_CTRL_EXIT_TO_XEN
|
||||
/*
|
||||
* Requires %rbx=stack_end
|
||||
* Requires %r14=stack_end
|
||||
* Clobbers %rax, %rcx, %rdx
|
||||
*/
|
||||
testb $SCF_ist_sc_msr, STACK_CPUINFO_FIELD(spec_ctrl_flags)(%rbx)
|
||||
testb $SCF_ist_sc_msr, STACK_CPUINFO_FIELD(spec_ctrl_flags)(%r14)
|
||||
jz .L\@_skip_sc_msr
|
||||
|
||||
/*
|
||||
@@ -376,10 +376,10 @@ UNLIKELY_DISPATCH_LABEL(\@_serialise):
|
||||
*/
|
||||
xor %edx, %edx
|
||||
|
||||
testb $SCF_use_shadow, STACK_CPUINFO_FIELD(spec_ctrl_flags)(%rbx)
|
||||
testb $SCF_use_shadow, STACK_CPUINFO_FIELD(spec_ctrl_flags)(%r14)
|
||||
jz .L\@_skip_sc_msr
|
||||
|
||||
mov STACK_CPUINFO_FIELD(shadow_spec_ctrl)(%rbx), %eax
|
||||
mov STACK_CPUINFO_FIELD(shadow_spec_ctrl)(%r14), %eax
|
||||
mov $MSR_SPEC_CTRL, %ecx
|
||||
wrmsr
|
||||
|
||||
|
||||