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)
This commit is contained in:
Mark Johnston 2025-10-22 14:04:46 +00:00
parent 36224ed427
commit d779d823da

View file

@ -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)))