diff options
author | Nicolas Thill <nico@openwrt.org> | 2007-09-04 10:44:45 +0000 |
---|---|---|
committer | Nicolas Thill <nico@openwrt.org> | 2007-09-04 10:44:45 +0000 |
commit | f0715bbde9cb973977fa3da1bbe07af29ac49260 (patch) | |
tree | 8dc687cdef82f72c0544cb8c889dd931cc5af5a3 /target/linux/ar7-2.6/files/arch | |
parent | 5956d4bfc26e39181a166b144a68a1a6ef98ae92 (diff) | |
download | upstream-f0715bbde9cb973977fa3da1bbe07af29ac49260.tar.gz upstream-f0715bbde9cb973977fa3da1bbe07af29ac49260.tar.bz2 upstream-f0715bbde9cb973977fa3da1bbe07af29ac49260.zip |
use kernel abs(), remove recursion in gcd() (closes: #2307)
SVN-Revision: 8608
Diffstat (limited to 'target/linux/ar7-2.6/files/arch')
-rw-r--r-- | target/linux/ar7-2.6/files/arch/mips/ar7/clock.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/target/linux/ar7-2.6/files/arch/mips/ar7/clock.c b/target/linux/ar7-2.6/files/arch/mips/ar7/clock.c index f51c641a3d..c7ae09ecd7 100644 --- a/target/linux/ar7-2.6/files/arch/mips/ar7/clock.c +++ b/target/linux/ar7-2.6/files/arch/mips/ar7/clock.c @@ -99,16 +99,20 @@ EXPORT_SYMBOL(ar7_bus_clock); int ar7_dsp_clock = 0; EXPORT_SYMBOL(ar7_dsp_clock); -static int gcd(int x, int y) +static int gcd(int a, int b) { - if (x > y) - return (x % y) ? gcd(y, x % y) : y; - return (y % x) ? gcd(x, y % x) : x; -} + int c; -static inline int ABS(int x) -{ - return (x >= 0) ? x : -x; + if ( a < b) { + c = a; + a = b; + b = c; + } + while (c = (a % b)) { + a = b; + b = c; + } + return b; } static void approximate(int base, int target, int *prediv, @@ -118,7 +122,7 @@ static void approximate(int base, int target, int *prediv, for (i = 1; i <= 16; i++) { for (j = 1; j <= 32; j++) { for (k = 1; k <= 32; k++) { - freq = ABS(base / j * i / k - target); + freq = abs(base / j * i / k - target); if (freq < res) { res = freq; *mul = i; |