All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] [RFC] [X86] Fix a compilation issue with clang.
@ 2013-08-29 17:13 dl9pf
  2013-08-29 17:28 ` H. Peter Anvin
  0 siblings, 1 reply; 16+ messages in thread
From: dl9pf @ 2013-08-29 17:13 UTC (permalink / raw)
  To: linux-kernel; +Cc: dl9pf, x86, hpa, pageexec, llvmlinux, behanw

From: Jan-Simon Möller <dl9pf@gmx.de>

Clang does not support the "shortcut" we're taking here for gcc (see below).
The patch extends and uses the macro _ASM_DX to do the job.

>From arch/x86/include/asm/uaccess.h:
/*
 * Careful: we have to cast the result to the type of the pointer
 * for sign reasons.
 *
 * The use of %edx as the register specifier is a bit of a
 * simplification, as gcc only cares about it as the starting point
 * and not size: for a 64-bit value it will use %ecx:%edx on 32 bits
 * (%ecx being the next register in gcc's x86 register sequence), and
 * %rdx on 64 bits.
 */

Signed-off-by: Jan-Simon Möller <dl9pf@gmx.de>
CC: pageexec@freemail.hu
CC: llvmlinux@lists.linuxfoundation.org
CC: behanw@converseincode.com
---
 arch/x86/include/asm/asm.h     | 6 +++++-
 arch/x86/include/asm/uaccess.h | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h
index 1c2d247..4582e8e 100644
--- a/arch/x86/include/asm/asm.h
+++ b/arch/x86/include/asm/asm.h
@@ -3,21 +3,25 @@
 
 #ifdef __ASSEMBLY__
 # define __ASM_FORM(x)	x
+# define __ASM_FORM_RAW(x)     x
 # define __ASM_FORM_COMMA(x) x,
 #else
 # define __ASM_FORM(x)	" " #x " "
+# define __ASM_FORM_RAW(x)     #x
 # define __ASM_FORM_COMMA(x) " " #x ","
 #endif
 
 #ifdef CONFIG_X86_32
 # define __ASM_SEL(a,b) __ASM_FORM(a)
+# define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(a)
 #else
 # define __ASM_SEL(a,b) __ASM_FORM(b)
+# define __ASM_SEL_RAW(a,b) __ASM_FORM_RAW(b)
 #endif
 
 #define __ASM_SIZE(inst, ...)	__ASM_SEL(inst##l##__VA_ARGS__, \
 					  inst##q##__VA_ARGS__)
-#define __ASM_REG(reg)		__ASM_SEL(e##reg, r##reg)
+#define __ASM_REG(reg)         __ASM_SEL_RAW(e##reg, r##reg)
 
 #define _ASM_PTR	__ASM_SEL(.long, .quad)
 #define _ASM_ALIGN	__ASM_SEL(.balign 4, .balign 8)
diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
index 8fa3bd6..32432d1 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -163,7 +163,7 @@ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
 #define get_user(x, ptr)						\
 ({									\
 	int __ret_gu;							\
-	register __inttype(*(ptr)) __val_gu asm("%edx");		\
+	register __inttype(*(ptr)) __val_gu asm("%"_ASM_DX);		\
 	__chk_user_ptr(ptr);						\
 	might_fault();							\
 	asm volatile("call __get_user_%P3"				\
-- 
1.8.1.4


^ permalink raw reply related	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2013-08-29 20:42 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-08-29 17:13 [PATCH] [RFC] [X86] Fix a compilation issue with clang dl9pf
2013-08-29 17:28 ` H. Peter Anvin
2013-08-29 18:00   ` [llvmlinux] " Jan-Simon Möller
2013-08-29 18:11     ` H. Peter Anvin
2013-08-29 18:11       ` Jan-Simon Möller
2013-08-29 18:18         ` H. Peter Anvin
2013-08-29 18:23           ` Jan-Simon Möller
2013-08-29 18:31             ` H. Peter Anvin
2013-08-29 18:36               ` Jan-Simon Möller
2013-08-29 18:41                 ` H. Peter Anvin
2013-08-29 19:13                 ` dl9pf
2013-08-29 19:13                   ` [PATCH 1/2] Extend definitions of _ASM_* with a raw format dl9pf
2013-08-29 20:30                     ` [tip:x86/asm] x86, asm: " tip-bot for Jan-Simon Möller
2013-08-29 19:13                   ` [PATCH 2/2] [X86] Fix a compilation issue with clang dl9pf
2013-08-29 20:31                     ` [tip:x86/asm] x86, asm: " tip-bot for Jan-Simon Möller
2013-08-29 20:42                     ` [tip:x86/asm] x86, doc: Update uaccess.h comment to reflect clang changes tip-bot for H. Peter Anvin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.