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 / synch.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  973 b   |  45 lines

  1. #ifndef _ASM_POWERPC_SYNCH_H 
  2. #define _ASM_POWERPC_SYNCH_H 
  3. #ifdef __KERNEL__
  4.  
  5. #include <linux/stringify.h>
  6. #include <asm/feature-fixups.h>
  7.  
  8. #ifndef __ASSEMBLY__
  9. extern unsigned int __start___lwsync_fixup, __stop___lwsync_fixup;
  10. extern void do_lwsync_fixups(unsigned long value, void *fixup_start,
  11.                  void *fixup_end);
  12.  
  13. static inline void eieio(void)
  14. {
  15.     __asm__ __volatile__ ("eieio" : : : "memory");
  16. }
  17.  
  18. static inline void isync(void)
  19. {
  20.     __asm__ __volatile__ ("isync" : : : "memory");
  21. }
  22. #endif /* __ASSEMBLY__ */
  23.  
  24. #if defined(__powerpc64__)
  25. #    define LWSYNC    lwsync
  26. #elif defined(CONFIG_E500)
  27. #    define LWSYNC                    \
  28.     START_LWSYNC_SECTION(96);            \
  29.     sync;                        \
  30.     MAKE_LWSYNC_SECTION_ENTRY(96, __lwsync_fixup);
  31. #else
  32. #    define LWSYNC    sync
  33. #endif
  34.  
  35. #ifdef CONFIG_SMP
  36. #define ISYNC_ON_SMP    "\n\tisync\n"
  37. #define LWSYNC_ON_SMP    stringify_in_c(LWSYNC) "\n"
  38. #else
  39. #define ISYNC_ON_SMP
  40. #define LWSYNC_ON_SMP
  41. #endif
  42.  
  43. #endif /* __KERNEL__ */
  44. #endif    /* _ASM_POWERPC_SYNCH_H */
  45.