Add GENMASK macros
Import GENMASK_32 and GENMASK_64 macros from optee-os (permissive license). And default GENMASK is set to GENMASK_32 for AARCH32, and to GENMASK_64 for 64bit arch. fixes arm-software/tf-issues#596 Signed-off-by: Yann Gautier <yann.gautier@st.com> Signed-off-by: Nicolas Le Bayon <nicolas.le.bayon@st.com>
This commit is contained in:
parent
1ebdbe79c7
commit
39676357af
|
@ -18,6 +18,23 @@
|
|||
|
||||
#define BIT(nr) (ULL(1) << (nr))
|
||||
|
||||
/*
|
||||
* Create a contiguous bitmask starting at bit position @l and ending at
|
||||
* position @h. For example
|
||||
* GENMASK_64(39, 21) gives us the 64bit vector 0x000000ffffe00000.
|
||||
*/
|
||||
#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))))
|
||||
|
||||
#ifdef AARCH32
|
||||
#define GENMASK GENMASK_32
|
||||
#else
|
||||
#define GENMASK GENMASK_64
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This variant of div_round_up can be used in macro definition but should not
|
||||
* be used in C code as the `div` parameter is evaluated twice.
|
||||
|
|
Loading…
Reference in New Issue