types: add C99-style constructors to <asm-generic/int-*.h>
authorH. Peter Anvin <hpa@zytor.com>
Thu, 24 Apr 2008 20:37:33 +0000 (13:37 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Fri, 2 May 2008 23:18:42 +0000 (16:18 -0700)
Add C99-style constructor macros for fixed types to
<asm-generic/int-*.h>.  Since Linux uses names like "u64" instead of
"uint64_t", the constructor macros are called U64_C() instead of
UINT64_C() and so forth.

These macros allow specific sizes to be specified as
U64_C(0x123456789abcdef), without gcc issuing warnings as it will if
one writes (u64)0x123456789abcdef.

When used from assembly, these macros pass their argument unchanged.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
include/asm-generic/int-l64.h
include/asm-generic/int-ll64.h

index 629b5a43f0b051fc16d764864093394a040e4bfd..2af9b75d77db330cc5da1b64fee6a8eb0807f23b 100644 (file)
@@ -44,6 +44,26 @@ typedef unsigned int u32;
 typedef signed long s64;
 typedef unsigned long u64;
 
+#define S8_C(x)  x
+#define U8_C(x)  x ## U
+#define S16_C(x) x
+#define U16_C(x) x ## U
+#define S32_C(x) x
+#define U32_C(x) x ## U
+#define S64_C(x) x ## L
+#define U64_C(x) x ## UL
+
+#else /* __ASSEMBLY__ */
+
+#define S8_C(x)  x
+#define U8_C(x)  x
+#define S16_C(x) x
+#define U16_C(x) x
+#define S32_C(x) x
+#define U32_C(x) x
+#define S64_C(x) x
+#define U64_C(x) x
+
 #endif /* __ASSEMBLY__ */
 
 #endif /* __KERNEL__ */
index 1e5ffec0575914bc9a41c05ef3f1d242d9b7c78c..260948905e4ea5d35f781ffcd08dff5428e6b58d 100644 (file)
@@ -49,6 +49,26 @@ typedef unsigned int u32;
 typedef signed long long s64;
 typedef unsigned long long u64;
 
+#define S8_C(x)  x
+#define U8_C(x)  x ## U
+#define S16_C(x) x
+#define U16_C(x) x ## U
+#define S32_C(x) x
+#define U32_C(x) x ## U
+#define S64_C(x) x ## LL
+#define U64_C(x) x ## ULL
+
+#else /* __ASSEMBLY__ */
+
+#define S8_C(x)  x
+#define U8_C(x)  x
+#define S16_C(x) x
+#define U16_C(x) x
+#define S32_C(x) x
+#define U32_C(x) x
+#define S64_C(x) x
+#define U64_C(x) x
+
 #endif /* __ASSEMBLY__ */
 
 #endif /* __KERNEL__ */