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