summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorJagan Teki <jteki@openedev.com>2015-10-21 16:46:51 +0530
committerTom Rini <trini@konsulko.com>2015-10-21 09:14:07 -0400
commit89b5c81b75658b7ff66dea6c38a51dfecc9dd508 (patch)
treeabf5fd64f8f6ed5abd1029a5f6c02b382d003d83 /include/linux
parent673452876fe988048764e3c9fc1c42b9f51d3255 (diff)
downloadu-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.h11
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).