| Jeff Dike | 060e352 | 2005-05-20 13:59:08 -0700 | [diff] [blame] | 1 | #include <linux/module.h> | 
 | 2 | #include <linux/kernel.h> | 
 | 3 | #include <linux/delay.h> | 
 | 4 | #include <asm/param.h> | 
| Bodo Stroesser | 5fd861b | 2005-05-05 16:15:37 -0700 | [diff] [blame] | 5 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 6 | void __delay(unsigned long time) | 
 | 7 | { | 
 | 8 | 	/* Stolen from the i386 __loop_delay */ | 
 | 9 | 	int d0; | 
 | 10 | 	__asm__ __volatile__( | 
 | 11 | 		"\tjmp 1f\n" | 
 | 12 | 		".align 16\n" | 
 | 13 | 		"1:\tjmp 2f\n" | 
 | 14 | 		".align 16\n" | 
 | 15 | 		"2:\tdecl %0\n\tjns 2b" | 
 | 16 | 		:"=&a" (d0) | 
 | 17 | 		:"0" (time)); | 
 | 18 | } | 
 | 19 |  | 
| Bodo Stroesser | 5fd861b | 2005-05-05 16:15:37 -0700 | [diff] [blame] | 20 | void __udelay(unsigned long usecs) | 
 | 21 | { | 
 | 22 | 	int i, n; | 
 | 23 |  | 
 | 24 | 	n = (loops_per_jiffy * HZ * usecs) / MILLION; | 
| Jeff Dike | 060e352 | 2005-05-20 13:59:08 -0700 | [diff] [blame] | 25 |         for(i=0;i<n;i++) | 
 | 26 |                 cpu_relax(); | 
| Bodo Stroesser | 5fd861b | 2005-05-05 16:15:37 -0700 | [diff] [blame] | 27 | } | 
 | 28 |  | 
| Jeff Dike | 060e352 | 2005-05-20 13:59:08 -0700 | [diff] [blame] | 29 | EXPORT_SYMBOL(__udelay); |