Introduce UL(), L() and LL() macros

utils_def.h already has U() and ULL(), but not UL(), which is needed for
types like uinptr_t and u_register_t.

Also added L() and LL() for signed values.

Change-Id: I0654df80d57149ff49507c52f1b27f3d500486a0
Signed-off-by: Antonio Nino Diaz <antonio.ninodiaz@arm.com>
This commit is contained in:
Antonio Nino Diaz 2018-07-18 11:56:00 +01:00
parent ba0248b52d
commit 029f5a28a8
1 changed files with 14 additions and 8 deletions

View File

@ -99,20 +99,26 @@
((u32) > (UINT32_MAX - (inc)) ? 1 : 0) ((u32) > (UINT32_MAX - (inc)) ? 1 : 0)
/* /*
* For those constants to be shared between C and other sources, apply a 'u' * For those constants to be shared between C and other sources, apply a 'U',
* or 'ull' suffix to the argument only in C, to avoid undefined or unintended * 'UL', 'ULL', 'L' or 'LL' suffix to the argument only in C, to avoid
* behaviour. * undefined or unintended behaviour.
* *
* The GNU assembler and linker do not support the 'u' and 'ull' suffix (it * The GNU assembler and linker do not support these suffixes (it causes the
* causes the build process to fail) therefore the suffix is omitted when used * build process to fail) therefore the suffix is omitted when used in linker
* in linker scripts and assembler files. * scripts and assembler files.
*/ */
#if defined(__LINKER__) || defined(__ASSEMBLY__) #if defined(__LINKER__) || defined(__ASSEMBLY__)
# define U(_x) (_x) # define U(_x) (_x)
# define UL(_x) (_x)
# define ULL(_x) (_x) # define ULL(_x) (_x)
# define L(_x) (_x)
# define LL(_x) (_x)
#else #else
# define U(_x) (_x##U) # define U(_x) (_x##U)
# define UL(_x) (_x##UL)
# define ULL(_x) (_x##ULL) # define ULL(_x) (_x##ULL)
# define L(_x) (_x##L)
# define LL(_x) (_x##LL)
#endif #endif
/* Register size of the current architecture. */ /* Register size of the current architecture. */