1 #ifndef __ASM_MIPS_BARRIER_H_WRAPPER
2 #define __ASM_MIPS_BARRIER_H_WRAPPER 1
4 #include <asm/system.h>
6 /* Not sure whether these really need to be defined, but the conservative
7 * choice seems to be to define them. */
8 #define CONFIG_WEAK_ORDERING 1
9 #define CONFIG_WEAK_REORDERING_BEYOND_LLSC 1
11 #if defined(CONFIG_WEAK_ORDERING) && defined(CONFIG_SMP)
12 #define __WEAK_ORDERING_MB " sync \n"
14 #define __WEAK_ORDERING_MB " \n"
16 #if defined(CONFIG_WEAK_REORDERING_BEYOND_LLSC) && defined(CONFIG_SMP)
17 #define __WEAK_LLSC_MB " sync \n"
19 #define __WEAK_LLSC_MB " \n"
22 #define smp_mb() __asm__ __volatile__(__WEAK_ORDERING_MB : : :"memory")
23 #define smp_rmb() __asm__ __volatile__(__WEAK_ORDERING_MB : : :"memory")
24 #define smp_wmb() __asm__ __volatile__(__WEAK_ORDERING_MB : : :"memory")
27 #endif /* asm/barrier.h */