aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2008-04-24 16:37:33 -0400
committerH. Peter Anvin <hpa@zytor.com>2008-05-02 19:18:42 -0400
commitc25bd29805f4d854c3a0b4176813f3c1bff569d3 (patch)
tree8712a2748b842176d177dedb2e6594b71fc2ff10
parent4cf63c8ac48c63b4c55669d4648506ed2bb8976f (diff)
types: add C99-style constructors to <asm-generic/int-*.h>
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>
-rw-r--r--include/asm-generic/int-l64.h20
-rw-r--r--include/asm-generic/int-ll64.h20
2 files changed, 40 insertions, 0 deletions
diff --git a/include/asm-generic/int-l64.h b/include/asm-generic/int-l64.h
index 629b5a43f0b0..2af9b75d77db 100644
--- a/include/asm-generic/int-l64.h
+++ b/include/asm-generic/int-l64.h
@@ -44,6 +44,26 @@ typedef unsigned int u32;
44typedef signed long s64; 44typedef signed long s64;
45typedef unsigned long u64; 45typedef unsigned long u64;
46 46
47#define S8_C(x) x
48#define U8_C(x) x ## U
49#define S16_C(x) x
50#define U16_C(x) x ## U
51#define S32_C(x) x
52#define U32_C(x) x ## U
53#define S64_C(x) x ## L
54#define U64_C(x) x ## UL
55
56#else /* __ASSEMBLY__ */
57
58#define S8_C(x) x
59#define U8_C(x) x
60#define S16_C(x) x
61#define U16_C(x) x
62#define S32_C(x) x
63#define U32_C(x) x
64#define S64_C(x) x
65#define U64_C(x) x
66
47#endif /* __ASSEMBLY__ */ 67#endif /* __ASSEMBLY__ */
48 68
49#endif /* __KERNEL__ */ 69#endif /* __KERNEL__ */
diff --git a/include/asm-generic/int-ll64.h b/include/asm-generic/int-ll64.h
index 1e5ffec05759..260948905e4e 100644
--- a/include/asm-generic/int-ll64.h
+++ b/include/asm-generic/int-ll64.h
@@ -49,6 +49,26 @@ typedef unsigned int u32;
49typedef signed long long s64; 49typedef signed long long s64;
50typedef unsigned long long u64; 50typedef unsigned long long u64;
51 51
52#define S8_C(x) x
53#define U8_C(x) x ## U
54#define S16_C(x) x
55#define U16_C(x) x ## U
56#define S32_C(x) x
57#define U32_C(x) x ## U
58#define S64_C(x) x ## LL
59#define U64_C(x) x ## ULL
60
61#else /* __ASSEMBLY__ */
62
63#define S8_C(x) x
64#define U8_C(x) x
65#define S16_C(x) x
66#define U16_C(x) x
67#define S32_C(x) x
68#define U32_C(x) x
69#define S64_C(x) x
70#define U64_C(x) x
71
52#endif /* __ASSEMBLY__ */ 72#endif /* __ASSEMBLY__ */
53 73
54#endif /* __KERNEL__ */ 74#endif /* __KERNEL__ */