git: d779d823dafb - stable/15 - linuxkpi: Fix the definition of BITS_PER_LONG

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Wed, 29 Oct 2025 12:50:33 UTC
The branch stable/15 has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=d779d823dafb711dbedab15647b4ab9537487cdf

commit d779d823dafb711dbedab15647b4ab9537487cdf
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2025-10-22 14:04:46 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2025-10-29 12:47:01 +0000

    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
    
    (cherry picked from commit 3e9ad70a30d93fc8bc759af7ec57aaa7e0b2d4f6)
---
 sys/compat/linuxkpi/common/include/linux/bitops.h | 9 ++-------
 1 file 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)))