diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1997-06-01 03:16:17 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1997-06-01 03:16:17 +0000 |
commit | d8d9b8f76f22b7a16a83e261e64f89ee611f49df (patch) | |
tree | 3067bc130b80d52808e6390c9fc7fc087ec1e33c /include/asm-i386/delay.h | |
parent | 19c9bba94152148523ba0f7ef7cffe3d45656b11 (diff) |
Initial revision
Diffstat (limited to 'include/asm-i386/delay.h')
-rw-r--r-- | include/asm-i386/delay.h | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/include/asm-i386/delay.h b/include/asm-i386/delay.h index e22e8d6b2..3435e4d1b 100644 --- a/include/asm-i386/delay.h +++ b/include/asm-i386/delay.h @@ -30,21 +30,26 @@ extern __inline__ void __delay(int loops) * first constant multiplications gets optimized away if the delay is * a constant) */ -extern __inline__ void udelay(unsigned long usecs) +extern __inline__ void __udelay(unsigned long usecs, unsigned long lps) { usecs *= 0x000010c6; /* 2**32 / 1000000 */ __asm__("mull %0" :"=d" (usecs) -#ifdef __SMP__ - :"a" (usecs),"0" (cpu_data[smp_processor_id()].udelay_val) -#else - :"a" (usecs),"0" (loops_per_sec) -#endif + :"a" (usecs),"0" (lps) :"ax"); __delay(usecs); } +#ifdef __SMP__ +#define __udelay_val cpu_data[smp_processor_id()].udelay_val +#else +#define __udelay_val loops_per_sec +#endif + +#define udelay(usecs) __udelay((usecs),__udelay_val) + + extern __inline__ unsigned long muldiv(unsigned long a, unsigned long b, unsigned long c) { __asm__("mull %1 ; divl %2" |