sh: Fixup ndelay() xloops calculation for alternate HZ.
authorkogiidena <kogiidena@eggplant.ddo.jp>
Tue, 8 May 2007 11:45:46 +0000 (20:45 +0900)
committerPaul Mundt <lethal@hera.kernel.org>
Wed, 9 May 2007 01:35:02 +0000 (01:35 +0000)
Currently the xloops calculation in ndelay() gets set to 0 when
calculated with HZ=250, fix up how we do the HZ factoring in order
to get this right for differing values.

Signed-off-by: kogiidena <kogiidena@eggplant.ddo.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/lib/delay.c

index 351714694d6d4b9b6f81d183e774f1fc47e0e215..f3ddd2133e6f4edffb5a7fc7958350d9d1c2f680 100644 (file)
@@ -24,9 +24,10 @@ inline void __const_udelay(unsigned long xloops)
        __asm__("dmulu.l        %0, %2\n\t"
                "sts    mach, %0"
                : "=r" (xloops)
        __asm__("dmulu.l        %0, %2\n\t"
                "sts    mach, %0"
                : "=r" (xloops)
-               : "0" (xloops), "r" (cpu_data[raw_smp_processor_id()].loops_per_jiffy)
+               : "0" (xloops),
+                 "r" (HZ * cpu_data[raw_smp_processor_id()].loops_per_jiffy)
                : "macl", "mach");
                : "macl", "mach");
-       __delay(xloops * HZ);
+       __delay(xloops);
 }
 
 void __udelay(unsigned long usecs)
 }
 
 void __udelay(unsigned long usecs)