mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-01-14 17:22:05 +03:00
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 <behlendorf1@llnl.gov> Signed-off-by: Alexander Motin <alexander.motin@TrueNAS.com> Closes #18004
This commit is contained in:
parent
071369803e
commit
e1f0baa546
@ -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
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user