Initial import
[openvswitch] / datapath / linux-2.4 / compat-2.4 / include-mips / asm / barrier.h
1 #ifndef __ASM_MIPS_BARRIER_H_WRAPPER
2 #define __ASM_MIPS_BARRIER_H_WRAPPER 1
3
4 #include <asm/system.h>
5
6 #error "Cribbed from linux-2.6/include/asm-mips/barrier.h but untested."
7
8 /* Not sure whether these really need to be defined, but the conservative
9  * choice seems to be to define them. */
10 #define CONFIG_WEAK_ORDERING 1
11 #define CONFIG_WEAK_REORDERING_BEYOND_LLSC 1
12
13 #if defined(CONFIG_WEAK_ORDERING) && defined(CONFIG_SMP)
14 #define __WEAK_ORDERING_MB      "       sync    \n"
15 #else
16 #define __WEAK_ORDERING_MB      "               \n"
17 #endif
18 #if defined(CONFIG_WEAK_REORDERING_BEYOND_LLSC) && defined(CONFIG_SMP)
19 #define __WEAK_LLSC_MB          "       sync    \n"
20 #else
21 #define __WEAK_LLSC_MB          "               \n"
22 #endif
23
24 #define smp_mb()        __asm__ __volatile__(__WEAK_ORDERING_MB : : :"memory")
25 #define smp_rmb()       __asm__ __volatile__(__WEAK_ORDERING_MB : : :"memory")
26 #define smp_wmb()       __asm__ __volatile__(__WEAK_ORDERING_MB : : :"memory")
27
28
29 #endif /* asm/barrier.h */