diff options
author | Tony Lindgren <tony@atomide.com> | 2017-11-28 08:12:32 -0800 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2017-11-28 08:12:32 -0800 |
commit | bc686442f8a601bccac1f22506ecdb4b0d62cadd (patch) | |
tree | b224ab4aa2350b233da640f5850f48bc6bfeb2d0 /lib/int_sqrt.c | |
parent | 60636a5d0fa2f8bc6d0c23c4027100ba20866f9b (diff) | |
parent | ca41e244517d6d3f1600c229ff7ca615049c1e9c (diff) |
Merge branch 'dts-fixes' into omap-for-v4.15/fixes-dt
Diffstat (limited to 'lib/int_sqrt.c')
-rw-r--r-- | lib/int_sqrt.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/int_sqrt.c b/lib/int_sqrt.c index 1ef4cc344977..e2d329099bf7 100644 --- a/lib/int_sqrt.c +++ b/lib/int_sqrt.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2013 Davidlohr Bueso <davidlohr.bueso@hp.com> * @@ -7,12 +8,13 @@ #include <linux/kernel.h> #include <linux/export.h> +#include <linux/bitops.h> /** - * int_sqrt - rough approximation to sqrt + * int_sqrt - computes the integer square root * @x: integer of which to calculate the sqrt * - * A very rough approximation to the sqrt() function. + * Computes: floor(sqrt(x)) */ unsigned long int_sqrt(unsigned long x) { @@ -21,7 +23,7 @@ unsigned long int_sqrt(unsigned long x) if (x <= 1) return x; - m = 1UL << (BITS_PER_LONG - 2); + m = 1UL << (__fls(x) & ~1UL); while (m != 0) { b = y + m; y >>= 1; |