0001
0002
0003 #include <linux/kernel.h>
0004 #include <linux/module.h>
0005 #include <linux/init.h>
0006 #include <linux/delay.h>
0007
0008 void __delay(unsigned long loops)
0009 {
0010 asm volatile (
0011 "mov r0, r0\n"
0012 "1:declt %0\n"
0013 "bf 1b"
0014 : "=r"(loops)
0015 : "0"(loops));
0016 }
0017 EXPORT_SYMBOL(__delay);
0018
0019 void __const_udelay(unsigned long xloops)
0020 {
0021 unsigned long long loops;
0022
0023 loops = (unsigned long long)xloops * loops_per_jiffy * HZ;
0024
0025 __delay(loops >> 32);
0026 }
0027 EXPORT_SYMBOL(__const_udelay);
0028
0029 void __udelay(unsigned long usecs)
0030 {
0031 __const_udelay(usecs * 0x10C7UL);
0032 }
0033 EXPORT_SYMBOL(__udelay);
0034
0035 void __ndelay(unsigned long nsecs)
0036 {
0037 __const_udelay(nsecs * 0x5UL);
0038 }
0039 EXPORT_SYMBOL(__ndelay);