* [PATCH v2] x86/asm/entry/64: Minor cleanup of conditional compilation
@ 2015-09-05 20:53 Nikolay Borisov
2015-09-06 6:03 ` H. Peter Anvin
0 siblings, 1 reply; 2+ messages in thread
From: Nikolay Borisov @ 2015-09-05 20:53 UTC (permalink / raw)
To: mingo; +Cc: hpa, dvlasenk, luto, linux-kernel, bp, Nikolay Borisov
The entry_SYSCALL_64_fastpath was checking the value of __SYSCALL_MASK,
which in turn was being set in arch/x86/include/asm/unistd.h depending on
whether CONFIG_X86_X32_ABI was set or not. This made the intention a bit
cryptic.
Juggle the code around so that the conditional compilation depends on
the value of CONFIG_X86_X32_ABI
Signed-off-by: Nikolay Borisov <nikolay.b.borisov@gmail.com>
---
Sending v2 as I had forgotten to add my signed-off-by line.
arch/x86/entry/entry_64.S | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index 8cb3e43..b0177f9 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -175,11 +175,11 @@ GLOBAL(entry_SYSCALL_64_after_swapgs)
testl $_TIF_WORK_SYSCALL_ENTRY, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
jnz tracesys
entry_SYSCALL_64_fastpath:
-#if __SYSCALL_MASK == ~0
- cmpq $__NR_syscall_max, %rax
-#else
+#ifdef CONFIG_X86_X32_ABI
andl $__SYSCALL_MASK, %eax
cmpl $__NR_syscall_max, %eax
+#else
+ cmpq $__NR_syscall_max, %rax
#endif
ja 1f /* return -ENOSYS (already in pt_regs->ax) */
movq %r10, %rcx
--
2.1.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] x86/asm/entry/64: Minor cleanup of conditional compilation
2015-09-05 20:53 [PATCH v2] x86/asm/entry/64: Minor cleanup of conditional compilation Nikolay Borisov
@ 2015-09-06 6:03 ` H. Peter Anvin
0 siblings, 0 replies; 2+ messages in thread
From: H. Peter Anvin @ 2015-09-06 6:03 UTC (permalink / raw)
To: Nikolay Borisov, mingo; +Cc: dvlasenk, luto, linux-kernel, bp
On 09/05/15 13:53, Nikolay Borisov wrote:
> The entry_SYSCALL_64_fastpath was checking the value of __SYSCALL_MASK,
> which in turn was being set in arch/x86/include/asm/unistd.h depending on
> whether CONFIG_X86_X32_ABI was set or not. This made the intention a bit
> cryptic.
On the contrary: that instruction can be omitted if and only if the
value of the mask is all 1's; it doesn't matter how the mask is set. So
you just turned a local constraint into a global constraint. This is
both unnecessarily confusing and opens the risk for bugs later.
If you feel the need, you could submit a patch to add a comment, but
this version is:
Nacked-by: H. Peter Anvin <hpa@zytor.com>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-09-06 6:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-05 20:53 [PATCH v2] x86/asm/entry/64: Minor cleanup of conditional compilation Nikolay Borisov
2015-09-06 6:03 ` H. Peter Anvin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox