This source file includes following definitions.
- __delay
- udelay
- ndelay
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 #include <linux/module.h>
   9 #include <linux/sched.h> 
  10 #include <asm/param.h>
  11 #include <asm/smp.h>
  12 #include <linux/delay.h>
  13 
  14 
  15 
  16 
  17 
  18 
  19 
  20 
  21 
  22 void
  23 __delay(int loops)
  24 {
  25         int tmp;
  26         __asm__ __volatile__(
  27                 "       rpcc %0\n"
  28                 "       addl %1,%0,%1\n"
  29                 "1:     rpcc %0\n"
  30                 "       subl %1,%0,%0\n"
  31                 "       bgt %0,1b"
  32                 : "=&r" (tmp), "=r" (loops) : "1"(loops));
  33 }
  34 EXPORT_SYMBOL(__delay);
  35 
  36 #ifdef CONFIG_SMP
  37 #define LPJ      cpu_data[smp_processor_id()].loops_per_jiffy
  38 #else
  39 #define LPJ      loops_per_jiffy
  40 #endif
  41 
  42 void
  43 udelay(unsigned long usecs)
  44 {
  45         usecs *= (((unsigned long)HZ << 32) / 1000000) * LPJ;
  46         __delay((long)usecs >> 32);
  47 }
  48 EXPORT_SYMBOL(udelay);
  49 
  50 void
  51 ndelay(unsigned long nsecs)
  52 {
  53         nsecs *= (((unsigned long)HZ << 32) / 1000000000) * LPJ;
  54         __delay((long)nsecs >> 32);
  55 }
  56 EXPORT_SYMBOL(ndelay);