| #include <linux/module.h> |
| #include <linux/kernel.h> |
| #include <linux/delay.h> |
| #include <asm/param.h> |
| |
| void __delay(unsigned long time) |
| { |
| /* Stolen from the i386 __loop_delay */ |
| int d0; |
| __asm__ __volatile__( |
| "\tjmp 1f\n" |
| ".align 16\n" |
| "1:\tjmp 2f\n" |
| ".align 16\n" |
| "2:\tdecl %0\n\tjns 2b" |
| :"=&a" (d0) |
| :"0" (time)); |
| } |
| |
| void __udelay(unsigned long usecs) |
| { |
| int i, n; |
| |
| n = (loops_per_jiffy * HZ * usecs) / MILLION; |
| for(i=0;i<n;i++) |
| cpu_relax(); |
| } |
| |
| EXPORT_SYMBOL(__udelay); |
| |
| void __const_udelay(unsigned long usecs) |
| { |
| int i, n; |
| |
| n = (loops_per_jiffy * HZ * usecs) / MILLION; |
| for(i=0;i<n;i++) |
| cpu_relax(); |
| } |
| |
| EXPORT_SYMBOL(__const_udelay); |