1 /* 2 * Copyright (c) 2016-2019, Arm Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #ifndef ARM_TRUSTED_FIRMWARE_EXPORT_LIB_UTILS_DEF_EXP_H 8 #define ARM_TRUSTED_FIRMWARE_EXPORT_LIB_UTILS_DEF_EXP_H 9 10 /* EXPORT HEADER -- See include/export/README for details! -- EXPORT HEADER */ 11 12 /* 13 * For those constants to be shared between C and other sources, apply a 'U', 14 * 'UL', 'ULL', 'L' or 'LL' suffix to the argument only in C, to avoid 15 * undefined or unintended behaviour. 16 * 17 * The GNU assembler and linker do not support these suffixes (it causes the 18 * build process to fail) therefore the suffix is omitted when used in linker 19 * scripts and assembler files. 20 */ 21 #if defined(__ASSEMBLER__) 22 # define U(_x) (_x) 23 # define UL(_x) (_x) 24 # define ULL(_x) (_x) 25 # define L(_x) (_x) 26 # define LL(_x) (_x) 27 #else 28 # define U_(_x) (_x##U) 29 # define U(_x) U_(_x) 30 # define UL_(_x) (_x##UL) 31 # define UL(_x) UL_(_x) 32 # define ULL_(_x) (_x##ULL) 33 # define ULL(_x) ULL_(_x) 34 # define L_(_x) (_x##L) 35 # define L(_x) L_(_x) 36 # define LL_(_x) (_x##LL) 37 # define LL(_x) LL_(_x) 38 39 #endif 40 41 #endif /* ARM_TRUSTED_FIRMWARE_EXPORT_LIB_UTILS_DEF_EXP_H */ 42