utils_def: add an assembly version for GENMASK
authorYann Gautier <yann.gautier@st.com>
Thu, 15 Nov 2018 08:49:24 +0000 (09:49 +0100)
committerYann Gautier <yann.gautier@st.com>
Thu, 15 Nov 2018 10:30:01 +0000 (11:30 +0100)
When compiling assembly files, stdint.h is not included.
UINT32_C and UINT64_C are then not defined.
A new GENMASK macro for assembly is then created.

Signed-off-by: Yann Gautier <yann.gautier@st.com>
include/lib/utils_def.h

index 1dd57cb354253db498780c9a1625ad7f0ad40a6f..fa13caa6b47bc9766569f0d722fdc07d9ba26ebc 100644 (file)
  * position @h. For example
  * GENMASK_64(39, 21) gives us the 64bit vector 0x000000ffffe00000.
  */
+#if defined(__LINKER__) || defined(__ASSEMBLY__)
+#define GENMASK_32(h, l) \
+       (((0xFFFFFFFF) << (l)) & (0xFFFFFFFF >> (32 - 1 - (h))))
+
+#define GENMASK_64(h, l) \
+       ((~0 << (l)) & (~0 >> (64 - 1 - (h))))
+#else
 #define GENMASK_32(h, l) \
        (((~UINT32_C(0)) << (l)) & (~UINT32_C(0) >> (32 - 1 - (h))))
 
 #define GENMASK_64(h, l) \
        (((~UINT64_C(0)) << (l)) & (~UINT64_C(0) >> (64 - 1 - (h))))
+#endif
 
 #ifdef AARCH32
 #define GENMASK                                GENMASK_32