home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / powerpc / include / asm / asm-compat.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.9 KB  |  70 lines

  1. #ifndef _ASM_POWERPC_ASM_COMPAT_H
  2. #define _ASM_POWERPC_ASM_COMPAT_H
  3.  
  4. #include <asm/types.h>
  5.  
  6. #ifdef __ASSEMBLY__
  7. #  define stringify_in_c(...)    __VA_ARGS__
  8. #  define ASM_CONST(x)        x
  9. #else
  10. /* This version of stringify will deal with commas... */
  11. #  define __stringify_in_c(...)    #__VA_ARGS__
  12. #  define stringify_in_c(...)    __stringify_in_c(__VA_ARGS__) " "
  13. #  define __ASM_CONST(x)    x##UL
  14. #  define ASM_CONST(x)        __ASM_CONST(x)
  15. #endif
  16.  
  17.  
  18. #ifdef __powerpc64__
  19.  
  20. /* operations for longs and pointers */
  21. #define PPC_LL        stringify_in_c(ld)
  22. #define PPC_STL        stringify_in_c(std)
  23. #define PPC_LCMPI    stringify_in_c(cmpdi)
  24. #define PPC_LONG    stringify_in_c(.llong)
  25. #define PPC_LONG_ALIGN    stringify_in_c(.balign 8)
  26. #define PPC_TLNEI    stringify_in_c(tdnei)
  27. #define PPC_LLARX    stringify_in_c(ldarx)
  28. #define PPC_STLCX    stringify_in_c(stdcx.)
  29. #define PPC_CNTLZL    stringify_in_c(cntlzd)
  30.  
  31. /* Move to CR, single-entry optimized version. Only available
  32.  * on POWER4 and later.
  33.  */
  34. #ifdef CONFIG_POWER4_ONLY
  35. #define PPC_MTOCRF    stringify_in_c(mtocrf)
  36. #else
  37. #define PPC_MTOCRF    stringify_in_c(mtcrf)
  38. #endif
  39.  
  40. #else /* 32-bit */
  41.  
  42. /* operations for longs and pointers */
  43. #define PPC_LL        stringify_in_c(lwz)
  44. #define PPC_STL        stringify_in_c(stw)
  45. #define PPC_LCMPI    stringify_in_c(cmpwi)
  46. #define PPC_LONG    stringify_in_c(.long)
  47. #define PPC_LONG_ALIGN    stringify_in_c(.balign 4)
  48. #define PPC_TLNEI    stringify_in_c(twnei)
  49. #define PPC_LLARX    stringify_in_c(lwarx)
  50. #define PPC_STLCX    stringify_in_c(stwcx.)
  51. #define PPC_CNTLZL    stringify_in_c(cntlzw)
  52. #define PPC_MTOCRF    stringify_in_c(mtcrf)
  53.  
  54. #endif
  55.  
  56. #ifdef __KERNEL__
  57. #ifdef CONFIG_IBM405_ERR77
  58. /* Erratum #77 on the 405 means we need a sync or dcbt before every
  59.  * stwcx.  The old ATOMIC_SYNC_FIX covered some but not all of this.
  60.  */
  61. #define PPC405_ERR77(ra,rb)    stringify_in_c(dcbt    ra, rb;)
  62. #define    PPC405_ERR77_SYNC    stringify_in_c(sync;)
  63. #else
  64. #define PPC405_ERR77(ra,rb)
  65. #define PPC405_ERR77_SYNC
  66. #endif
  67. #endif
  68.  
  69. #endif /* _ASM_POWERPC_ASM_COMPAT_H */
  70.