delay.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * Precise Delay Loops for SuperH
  3.  *
  4.  * Copyright (C) 1999 Niibe Yutaka & Kaz Kojima
  5.  */
  6. #include <linux/sched.h>
  7. #include <linux/delay.h>
  8. void __delay(unsigned long loops)
  9. {
  10. __asm__ __volatile__(
  11. "tst %0, %0nt"
  12. "1:t"
  13. "bf/s 1bnt"
  14. " dt %0"
  15. : "=r" (loops)
  16. : "0" (loops)
  17. : "t");
  18. }
  19. inline void __const_udelay(unsigned long xloops)
  20. {
  21. __asm__("dmulu.l %0, %2nt"
  22. "sts mach, %0"
  23. : "=r" (xloops)
  24. : "0" (xloops), "r" (current_cpu_data.loops_per_jiffy)
  25. : "macl", "mach");
  26. __delay(xloops * HZ);
  27. }
  28. void __udelay(unsigned long usecs)
  29. {
  30. __const_udelay(usecs * 0x000010c6);  /* 2**32 / 1000000 */
  31. }