Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c25bd298 authored by H. Peter Anvin's avatar H. Peter Anvin
Browse files

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: default avatarH. Peter Anvin <hpa@zytor.com>
parent 4cf63c8a
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -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__ */
+20 −0
Original line number Diff line number Diff line
@@ -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__ */