Commit c25bd29805f4d854c3a0b4176813f3c1bff569d3
1 parent
4cf63c8ac4
Exists in
master
and in
4 other branches
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>
Showing 2 changed files with 40 additions and 0 deletions Side-by-side Diff
include/asm-generic/int-l64.h
... | ... | @@ -44,6 +44,26 @@ |
44 | 44 | typedef signed long s64; |
45 | 45 | typedef 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 | 67 | #endif /* __ASSEMBLY__ */ |
48 | 68 | |
49 | 69 | #endif /* __KERNEL__ */ |
include/asm-generic/int-ll64.h
... | ... | @@ -49,6 +49,26 @@ |
49 | 49 | typedef signed long long s64; |
50 | 50 | typedef 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 | 72 | #endif /* __ASSEMBLY__ */ |
53 | 73 | |
54 | 74 | #endif /* __KERNEL__ */ |