From e1f0baa546b0e2af3495fac51903b51f6a1d0b26 Mon Sep 17 00:00:00 2001 From: Alexander Motin Date: Tue, 2 Dec 2025 15:13:16 -0500 Subject: [PATCH] FreeBSD: Remove HAVE_INLINE_FLSL use These macros are deprecated in FreeBSD kernel for several years, and unneeded for much longer. Instead, similar to Linux, let kernel let compiler do the right things. Reviewed-by: Brian Behlendorf Signed-off-by: Alexander Motin Closes #18004 --- include/os/freebsd/spl/sys/sysmacros.h | 77 ++------------------------ 1 file changed, 4 insertions(+), 73 deletions(-) diff --git a/include/os/freebsd/spl/sys/sysmacros.h b/include/os/freebsd/spl/sys/sysmacros.h index 93c98ef03..f92d7ccac 100644 --- a/include/os/freebsd/spl/sys/sysmacros.h +++ b/include/os/freebsd/spl/sys/sysmacros.h @@ -290,80 +290,11 @@ extern unsigned char bcd_to_byte[256]; #define offsetof(type, field) __offsetof(type, field) #endif -/* - * Find highest one bit set. - * Returns bit number + 1 of highest bit that is set, otherwise returns 0. - * High order bit is 31 (or 63 in _LP64 kernel). - */ -static __inline int -highbit(ulong_t i) -{ -#if defined(HAVE_INLINE_FLSL) - return (flsl(i)); -#else - int h = 1; +#define highbit(x) flsl(x) +#define lowbit(x) ffsl(x) - if (i == 0) - return (0); -#ifdef _LP64 - if (i & 0xffffffff00000000ul) { - h += 32; i >>= 32; - } -#endif - if (i & 0xffff0000) { - h += 16; i >>= 16; - } - if (i & 0xff00) { - h += 8; i >>= 8; - } - if (i & 0xf0) { - h += 4; i >>= 4; - } - if (i & 0xc) { - h += 2; i >>= 2; - } - if (i & 0x2) { - h += 1; - } - return (h); -#endif -} - -/* - * Find highest one bit set. - * Returns bit number + 1 of highest bit that is set, otherwise returns 0. - */ -static __inline int -highbit64(uint64_t i) -{ -#if defined(HAVE_INLINE_FLSLL) - return (flsll(i)); -#else - int h = 1; - - if (i == 0) - return (0); - if (i & 0xffffffff00000000ULL) { - h += 32; i >>= 32; - } - if (i & 0xffff0000) { - h += 16; i >>= 16; - } - if (i & 0xff00) { - h += 8; i >>= 8; - } - if (i & 0xf0) { - h += 4; i >>= 4; - } - if (i & 0xc) { - h += 2; i >>= 2; - } - if (i & 0x2) { - h += 1; - } - return (h); -#endif -} +#define highbit64(x) flsll(x) +#define lowbit64(x) ffsll(x) #ifdef __cplusplus }