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-ia64 / delay.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.7 KB  |  89 lines

  1. #ifndef _ASM_IA64_DELAY_H
  2. #define _ASM_IA64_DELAY_H
  3.  
  4. /*
  5.  * Delay routines using a pre-computed "cycles/usec" value.
  6.  *
  7.  * Copyright (C) 1998, 1999 Hewlett-Packard Co
  8.  *    David Mosberger-Tang <davidm@hpl.hp.com>
  9.  * Copyright (C) 1999 VA Linux Systems
  10.  * Copyright (C) 1999 Walt Drummond <drummond@valinux.com>
  11.  * Copyright (C) 1999 Asit Mallick <asit.k.mallick@intel.com>
  12.  * Copyright (C) 1999 Don Dugger <don.dugger@intel.com>
  13.  */
  14.  
  15. #include <linux/kernel.h>
  16. #include <linux/sched.h>
  17. #include <linux/compiler.h>
  18.  
  19. #include <asm/intrinsics.h>
  20. #include <asm/processor.h>
  21.  
  22. static __inline__ void
  23. ia64_set_itm (unsigned long val)
  24. {
  25.     ia64_setreg(_IA64_REG_CR_ITM, val);
  26.     ia64_srlz_d();
  27. }
  28.  
  29. static __inline__ unsigned long
  30. ia64_get_itm (void)
  31. {
  32.     unsigned long result;
  33.  
  34.     result = ia64_getreg(_IA64_REG_CR_ITM);
  35.     ia64_srlz_d();
  36.     return result;
  37. }
  38.  
  39. static __inline__ void
  40. ia64_set_itv (unsigned long val)
  41. {
  42.     ia64_setreg(_IA64_REG_CR_ITV, val);
  43.     ia64_srlz_d();
  44. }
  45.  
  46. static __inline__ unsigned long
  47. ia64_get_itv (void)
  48. {
  49.     return ia64_getreg(_IA64_REG_CR_ITV);
  50. }
  51.  
  52. static __inline__ void
  53. ia64_set_itc (unsigned long val)
  54. {
  55.     ia64_setreg(_IA64_REG_AR_ITC, val);
  56.     ia64_srlz_d();
  57. }
  58.  
  59. static __inline__ unsigned long
  60. ia64_get_itc (void)
  61. {
  62.     unsigned long result;
  63.  
  64.     result = ia64_getreg(_IA64_REG_AR_ITC);
  65.     ia64_barrier();
  66. #ifdef CONFIG_ITANIUM
  67.     while (unlikely((__s32) result == -1)) {
  68.         result = ia64_getreg(_IA64_REG_AR_ITC);
  69.         ia64_barrier();
  70.     }
  71. #endif
  72.     return result;
  73. }
  74.  
  75. extern void ia64_delay_loop (unsigned long loops);
  76.  
  77. static __inline__ void
  78. __delay (unsigned long loops)
  79. {
  80.     if (unlikely(loops < 1))
  81.         return;
  82.  
  83.     ia64_delay_loop (loops - 1);
  84. }
  85.  
  86. extern void udelay (unsigned long usecs);
  87.  
  88. #endif /* _ASM_IA64_DELAY_H */
  89.