diff options
author | Jagan Teki <jteki@openedev.com> | 2015-10-21 16:46:51 +0530 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2015-10-21 09:14:07 -0400 |
commit | 89b5c81b75658b7ff66dea6c38a51dfecc9dd508 (patch) | |
tree | abf5fd64f8f6ed5abd1029a5f6c02b382d003d83 /include/linux | |
parent | 673452876fe988048764e3c9fc1c42b9f51d3255 (diff) | |
download | u-boot-imx-89b5c81b75658b7ff66dea6c38a51dfecc9dd508.zip u-boot-imx-89b5c81b75658b7ff66dea6c38a51dfecc9dd508.tar.gz u-boot-imx-89b5c81b75658b7ff66dea6c38a51dfecc9dd508.tar.bz2 |
linux/bitops.h: GENMASK copy from linux
GENMASK is used to create a contiguous bitmask([hi:lo]).
This patch is a copy from Linux, with below commit details
"bitops: Fix shift overflow in GENMASK macros"
(sha1: 00b4d9a14125f1e51874def2b9de6092e007412d)
Cc: Tom Rini <trini@konsulko.com>
Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
Signed-off-by: Jagan Teki <jteki@openedev.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/bitops.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/bitops.h b/include/linux/bitops.h index e9bb827..7b4011f 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h @@ -8,6 +8,17 @@ #define BIT_WORD(nr) ((nr) / BITS_PER_LONG) /* + * Create a contiguous bitmask starting at bit position @l and ending at + * position @h. For example + * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000. + */ +#define GENMASK(h, l) \ + (((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h)))) + +#define GENMASK_ULL(h, l) \ + (((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h)))) + +/* * ffs: find first bit set. This is defined the same way as * the libc and compiler builtin ffs routines, therefore * differs in spirit from the above ffz (man ffs). |