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-sparc / delay.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  934 b   |  35 lines

  1. /* $Id: delay.h,v 1.11 2001/01/01 01:46:15 davem Exp $
  2.  * delay.h: Linux delay routines on the Sparc.
  3.  *
  4.  * Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu).
  5.  */
  6.  
  7. #ifndef __SPARC_DELAY_H
  8. #define __SPARC_DELAY_H
  9.  
  10. #include <asm/cpudata.h>
  11.  
  12. static inline void __delay(unsigned long loops)
  13. {
  14.     __asm__ __volatile__("cmp %0, 0\n\t"
  15.                  "1: bne 1b\n\t"
  16.                  "subcc %0, 1, %0\n" :
  17.                  "=&r" (loops) :
  18.                  "0" (loops) :
  19.                  "cc");
  20. }
  21.  
  22. /* This is too messy with inline asm on the Sparc. */
  23. extern void __udelay(unsigned long usecs, unsigned long lpj);
  24. extern void __ndelay(unsigned long nsecs, unsigned long lpj);
  25.  
  26. #ifdef CONFIG_SMP
  27. #define __udelay_val    cpu_data(smp_processor_id()).udelay_val
  28. #else /* SMP */
  29. #define __udelay_val    loops_per_jiffy
  30. #endif /* SMP */
  31. #define udelay(__usecs)    __udelay(__usecs, __udelay_val)
  32. #define ndelay(__nsecs)    __ndelay(__nsecs, __udelay_val)
  33.  
  34. #endif /* defined(__SPARC_DELAY_H) */
  35.