summaryrefslogtreecommitdiffstats
path: root/arch/x86/entry/entry_64.S
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2018-04-09 18:24:58 +0200
committerIngo Molnar <mingo@kernel.org>2018-04-09 18:24:58 +0200
commitee1400dda31814d0a61c964ad87da6880edec0e2 (patch)
treeefa8774a97234cf93b22877a51a54f71f9e979cb /arch/x86/entry/entry_64.S
parent071ccc966ba5db1ac8f5c24b0faebb37698f68db (diff)
parentbc16d4052f1ae99996f3475b5a73d29c86e7ba81 (diff)
downloadop-kernel-dev-ee1400dda31814d0a61c964ad87da6880edec0e2.zip
op-kernel-dev-ee1400dda31814d0a61c964ad87da6880edec0e2.tar.gz
Merge branch 'linus' into x86/pti to pick up upstream changes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/entry/entry_64.S')
-rw-r--r--arch/x86/entry/entry_64.S7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index e237913..cb1d8a3 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -55,7 +55,7 @@ END(native_usergs_sysret64)
.macro TRACE_IRQS_FLAGS flags:req
#ifdef CONFIG_TRACE_IRQFLAGS
- bt $9, \flags /* interrupts off? */
+ btl $9, \flags /* interrupts off? */
jnc 1f
TRACE_IRQS_ON
1:
@@ -260,8 +260,13 @@ GLOBAL(entry_SYSCALL_64_after_hwframe)
* Change top bits to match most significant bit (47th or 56th bit
* depending on paging mode) in the address.
*/
+#ifdef CONFIG_X86_5LEVEL
+ ALTERNATIVE "shl $(64 - 48), %rcx; sar $(64 - 48), %rcx", \
+ "shl $(64 - 57), %rcx; sar $(64 - 57), %rcx", X86_FEATURE_LA57
+#else
shl $(64 - (__VIRTUAL_MASK_SHIFT+1)), %rcx
sar $(64 - (__VIRTUAL_MASK_SHIFT+1)), %rcx
+#endif
/* If this changed %rcx, it was not canonical */
cmpq %rcx, %r11
OpenPOWER on IntegriCloud