[PATCH 1/2] bitops: Guard GENMASK and GENMASK_ULL against prior defines

Simon Glass sjg at chromium.org
Thu Apr 30 13:38:33 CEST 2026


Some headers - notably the ec_commands.h synced from upstream
Chrome OS EC - define GENMASK and GENMASK_ULL themselves before
linux/bitops.h is pulled in. The unguarded definitions here then trigger
a 'redefined' warning at the second site, even though both spellings
produce the same mask.

Wrap the two macros in '#ifndef' guards so a pre-existing definition
wins. The U-Boot expressions are unchanged.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 include/linux/bitops.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index 29e0da48de8..8b381c916cf 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -26,6 +26,7 @@
  * position @h. For example
  * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000.
  */
+#ifndef GENMASK
 #ifdef CONFIG_SANDBOX
 #define GENMASK(h, l) \
 	(((~0UL) << (l)) & (~0UL >> (CONFIG_SANDBOX_BITS_PER_LONG - 1 - (h))))
@@ -33,9 +34,12 @@
 #define GENMASK(h, l) \
 	(((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
 #endif
+#endif
 
+#ifndef GENMASK_ULL
 #define GENMASK_ULL(h, l) \
 	(((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))
+#endif
 
 /*
  * ffs: find first bit set. This is defined the same way as
-- 
2.43.0



More information about the U-Boot mailing list