• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/arch/powerpc/include/asm/
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 __PPC_ACQUIRE_BARRIER				\
41	START_LWSYNC_SECTION(97);			\
42	isync;						\
43	MAKE_LWSYNC_SECTION_ENTRY(97, __lwsync_fixup);
44#define PPC_ACQUIRE_BARRIER	"\n" stringify_in_c(__PPC_ACQUIRE_BARRIER)
45#define PPC_RELEASE_BARRIER	stringify_in_c(LWSYNC) "\n"
46#else
47#define PPC_ACQUIRE_BARRIER
48#define PPC_RELEASE_BARRIER
49#endif
50
51#endif /* __KERNEL__ */
52#endif	/* _ASM_POWERPC_SYNCH_H */
53