delay.c 510 B

1234567891011121314151617181920212223242526272829
  1. #include <linux/module.h>
  2. #include <linux/kernel.h>
  3. #include <linux/delay.h>
  4. #include <asm/param.h>
  5. void __delay(unsigned long time)
  6. {
  7. /* Stolen from the i386 __loop_delay */
  8. int d0;
  9. __asm__ __volatile__(
  10. "\tjmp 1f\n"
  11. ".align 16\n"
  12. "1:\tjmp 2f\n"
  13. ".align 16\n"
  14. "2:\tdecl %0\n\tjns 2b"
  15. :"=&a" (d0)
  16. :"0" (time));
  17. }
  18. void __udelay(unsigned long usecs)
  19. {
  20. int i, n;
  21. n = (loops_per_jiffy * HZ * usecs) / MILLION;
  22. for(i=0;i<n;i++)
  23. cpu_relax();
  24. }
  25. EXPORT_SYMBOL(__udelay);