aboutsummaryrefslogtreecommitdiff
diff options
authorMark Johnston <markj@FreeBSD.org>2025-10-22 14:04:46 +0000
committerMark Johnston <markj@FreeBSD.org>2025-10-22 14:04:46 +0000
commit3e9ad70a30d93fc8bc759af7ec57aaa7e0b2d4f6 (patch)
tree76cf032b6567e6d274f1d1689c76061dcf583033
parent5f2df8f83128adbd2cf22050ca078f2e46bbb227 (diff)
linuxkpi: Fix the definition of BITS_PER_LONG
Don't use __LP64__ to decide the value, as it gives the wrong result on CHERI platforms. Just define it in terms of __SIZEOF_LONG__. Make a similar adjustment for BITS_PER_LONG_LONG while here. Reviewed by: bz, dumbbell, emaste MFC after: 1 week Sponsored by: CHERI Research Centre (EPSRC grant UKRI3001) Differential Revision:https://reviews.freebsd.org/D53135
-rw-r--r--sys/compat/linuxkpi/common/include/linux/bitops.h9
1 files changed, 2 insertions, 7 deletions
diff --git a/sys/compat/linuxkpi/common/include/linux/bitops.h b/sys/compat/linuxkpi/common/include/linux/bitops.h
index 00dd1f9a1ec0..a5a7abd55287 100644
--- a/sys/compat/linuxkpi/common/include/linux/bitops.h
+++ b/sys/compat/linuxkpi/common/include/linux/bitops.h
@@ -37,13 +37,8 @@
#define BIT(nr) (1UL << (nr))
#define BIT_ULL(nr) (1ULL << (nr))
-#ifdef __LP64__
-#define BITS_PER_LONG 64
-#else
-#define BITS_PER_LONG 32
-#endif
-
-#define BITS_PER_LONG_LONG 64
+#define BITS_PER_LONG (__SIZEOF_LONG__ * __CHAR_BIT__)
+#define BITS_PER_LONG_LONG (__SIZEOF_LONG_LONG__ * __CHAR_BIT__)
#define BITMAP_FIRST_WORD_MASK(start) (~0UL << ((start) % BITS_PER_LONG))
#define BITMAP_LAST_WORD_MASK(n) (~0UL >> (BITS_PER_LONG - (n)))