linux(4): Use the right function to get the bit index in vdso binuptime.

This is modeled after a1f93266 (by kib@).

MFC after:		2 weeks
This commit is contained in:
Dmitry Chagin 2022-05-08 17:20:52 +03:00
parent 5a6a4fb284
commit c6df217603

View file

@ -37,25 +37,25 @@ fls(int mask)
#ifdef _LP64 #ifdef _LP64
static int static int
ffsl(long mask) flsl(long mask)
{ {
int bit; int bit;
if (mask == 0) if (mask == 0)
return (0); return (0);
for (bit = 1; !(mask & 1); bit++) for (bit = 1; mask != 1; bit++)
mask = (unsigned long)mask >> 1; mask = (unsigned long)mask >> 1;
return (bit); return (bit);
} }
#else #else
static int static int
ffsll(long long mask) flsll(long long mask)
{ {
int bit; int bit;
if (mask == 0) if (mask == 0)
return (0); return (0);
for (bit = 1; !(mask & 1); bit++) for (bit = 1; mask != 1; bit++)
mask = (unsigned long long)mask >> 1; mask = (unsigned long long)mask >> 1;
return (bit); return (bit);
} }
@ -186,9 +186,9 @@ freebsd_binuptime(struct bintime *bt, struct vdso_timekeep *tk, bool abs)
return (error); return (error);
scale = th->th_scale; scale = th->th_scale;
#ifdef _LP64 #ifdef _LP64
scale_bits = ffsl(scale); scale_bits = flsl(scale);
#else #else
scale_bits = ffsll(scale); scale_bits = flsll(scale);
#endif #endif
if (__predict_false(scale_bits + fls(delta) > 63)) { if (__predict_false(scale_bits + fls(delta) > 63)) {
x = (scale >> 32) * delta; x = (scale >> 32) * delta;