summaryrefslogtreecommitdiff
path: root/arch/sh/lib64/udelay.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2008-03-06 19:32:33 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-03-06 19:32:33 -0800
commitce4796d1e16cf3761dc2a02b8d588667d05b3078 (patch)
tree823d7012c6311c96eaf2041cf2b04558abbaec15 /arch/sh/lib64/udelay.c
parent46fbdf8935544dcde440bd807b50e52ed2ca7f3b (diff)
parent7b9726a7a0d8c70ea44a5ed23726748de344f223 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.25
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.25: sh: Fix up the sh64 build. sh: Fix up SH7710 VoIP-GW build. sh: Flag PMB support as EXPERIMENTAL. sh: Update r7780mp defconfig. fb: hitfb: Balance probe/remove section annotations. sh: hp6xx: Fix up hp6xx_apm build failure. fb: pvr2fb: Fix up remaining section mismatch. sh: Fix up section mismatches. sh: hp6xx: Correct APM output. sh: update se7780 defconfig sh: replace remaining __FUNCTION__ occurrences sh: export copy-page() to modules sh_ksyms_32.c update for gcc 4.3 sh/mm/pg-sh7705.c must #include <linux/fs.h>
Diffstat (limited to 'arch/sh/lib64/udelay.c')
-rw-r--r--arch/sh/lib64/udelay.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/arch/sh/lib64/udelay.c b/arch/sh/lib64/udelay.c
index 23c7d17fb9f7..d76bd801194f 100644
--- a/arch/sh/lib64/udelay.c
+++ b/arch/sh/lib64/udelay.c
@@ -21,7 +21,7 @@
* a 1GHz box, that's about 2 seconds.
*/
-void __delay(int loops)
+void __delay(unsigned long loops)
{
long long dummy;
__asm__ __volatile__("gettr tr0, %1\n\t"
@@ -33,24 +33,17 @@ void __delay(int loops)
:"0"(loops));
}
-void __udelay(unsigned long long usecs, unsigned long lpj)
+inline void __const_udelay(unsigned long xloops)
{
- usecs *= (((unsigned long long) HZ << 32) / 1000000) * lpj;
- __delay((long long) usecs >> 32);
+ __delay(xloops * (HZ * cpu_data[raw_smp_processor_id()].loops_per_jiffy));
}
-void __ndelay(unsigned long long nsecs, unsigned long lpj)
+void __udelay(unsigned long usecs)
{
- nsecs *= (((unsigned long long) HZ << 32) / 1000000000) * lpj;
- __delay((long long) nsecs >> 32);
+ __const_udelay(usecs * 0x000010c6); /* 2**32 / 1000000 */
}
-void udelay(unsigned long usecs)
+void __ndelay(unsigned long nsecs)
{
- __udelay(usecs, cpu_data[raw_smp_processor_id()].loops_per_jiffy);
-}
-
-void ndelay(unsigned long nsecs)
-{
- __ndelay(nsecs, cpu_data[raw_smp_processor_id()].loops_per_jiffy);
+ __const_udelay(nsecs * 0x00000005);
}