patch-2.2.18 linux/arch/i386/lib/delay.c
Next file: linux/arch/i386/math-emu/get_address.c
Previous file: linux/arch/i386/lib/Makefile
Back to the patch index
Back to the overall index
- Lines: 32
- Date:
Sat Sep 30 14:41:43 2000
- Orig file:
v2.2.17/arch/i386/lib/delay.c
- Orig date:
Fri Apr 21 12:45:46 2000
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.17/arch/i386/lib/delay.c linux/arch/i386/lib/delay.c
@@ -22,8 +22,7 @@
/*
* Do a udelay using the TSC for any CPU that happens
- * to have one that we trust. This could be optimised to avoid
- * the multiply per loop but its a delay loop so who are we kidding...
+ * to have one that we trust.
*/
static void __rdtsc_delay(unsigned long loops)
@@ -63,13 +62,19 @@
__loop_delay(loops);
}
+/*
+ * This could be optimised to avoid the multiply per loop but its a
+ * delay loop so who are we kidding... (we'd run into nasty 32-bit
+ * issues with delays > 10 ms or HZ > 100 that way)
+ */
+
void __const_udelay(unsigned long xloops)
{
int d0;
__asm__("mull %0"
:"=d" (xloops), "=&a" (d0)
- :"1" (xloops),"0" (current_cpu_data.loops_per_sec));
- __delay(xloops);
+ :"1" (xloops),"0" (current_cpu_data.loops_per_jiffy));
+ __delay(xloops * HZ);
}
/*
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)