home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-h8300 / delay.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  912 b   |  39 lines

  1. #ifndef _H8300_DELAY_H
  2. #define _H8300_DELAY_H
  3.  
  4. #include <asm/param.h>
  5.  
  6. /*
  7.  * Copyright (C) 2002 Yoshinori Sato <ysato@sourceforge.jp>
  8.  *
  9.  * Delay routines, using a pre-computed "loops_per_second" value.
  10.  */
  11.  
  12. extern __inline__ void __delay(unsigned long loops)
  13. {
  14.     __asm__ __volatile__ ("1:\n\t"
  15.                   "dec.l #1,%0\n\t"
  16.                   "bne 1b"
  17.                   :"=r" (loops):"0"(loops));
  18. }
  19.  
  20. /*
  21.  * Use only for very small delays ( < 1 msec).  Should probably use a
  22.  * lookup table, really, as the multiplications take much too long with
  23.  * short delays.  This is a "reasonable" implementation, though (and the
  24.  * first constant multiplications gets optimized away if the delay is
  25.  * a constant)  
  26.  */
  27.  
  28. extern unsigned long loops_per_jiffy;
  29.  
  30. extern __inline__ void udelay(unsigned long usecs)
  31. {
  32.     usecs *= 4295;        /* 2**32 / 1000000 */
  33.     usecs /= (loops_per_jiffy*HZ);
  34.     if (usecs)
  35.         __delay(usecs);
  36. }
  37.  
  38. #endif /* _H8300_DELAY_H */
  39.