mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-16 05:13:40 +00:00
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:
parent
5a6a4fb284
commit
c6df217603
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue