x86, cmpxchg: Use __compiletime_error() to make usage messages a bit nicer
authorJeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Mon, 29 Aug 2011 21:47:58 +0000 (14:47 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Tue, 30 Aug 2011 00:20:40 +0000 (17:20 -0700)
Use __compiletime_error() to produce a compile-time error rather than
link-time, where available.

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Link: http://lkml.kernel.org/r/4E5BCC40.3030501@goop.org
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/include/asm/cmpxchg.h

index 0d0d9cd..5d3acdf 100644 (file)
@@ -1,12 +1,19 @@
 #ifndef ASM_X86_CMPXCHG_H
 #define ASM_X86_CMPXCHG_H
 
+#include <linux/compiler.h>
 #include <asm/alternative.h> /* Provides LOCK_PREFIX */
 
-/* Non-existant functions to indicate usage errors at link time. */
-extern void __xchg_wrong_size(void);
-extern void __cmpxchg_wrong_size(void);
-extern void __xadd_wrong_size(void);
+/*
+ * Non-existant functions to indicate usage errors at link time
+ * (or compile-time if the compiler implements __compiletime_error().
+ */
+extern void __xchg_wrong_size(void)
+       __compiletime_error("Bad argument size for xchg");
+extern void __cmpxchg_wrong_size(void)
+       __compiletime_error("Bad argument size for cmpxchg");
+extern void __xadd_wrong_size(void)
+       __compiletime_error("Bad argument size for xadd");
 
 /*
  * Constants for operation sizes. On 32-bit, the 64-bit size it set to