1 #ifndef __BARRIER_H 2 #define __BARRIER_H 3 4 #include <asm/compiler.h> 5 6 #define mb() \ 7 __asm__ __volatile__("mb": : :"memory") 8 9 #define rmb() \ 10 __asm__ __volatile__("mb": : :"memory") 11 12 #define wmb() \ 13 __asm__ __volatile__("wmb": : :"memory") 14 15 #define read_barrier_depends() \ 16 __asm__ __volatile__("mb": : :"memory") 17 18 #ifdef CONFIG_SMP 19 #define smp_mb() mb() 20 #define smp_rmb() rmb() 21 #define smp_wmb() wmb() 22 #define smp_read_barrier_depends() read_barrier_depends() 23 #else 24 #define smp_mb() barrier() 25 #define smp_rmb() barrier() 26 #define smp_wmb() barrier() 27 #define smp_read_barrier_depends() do { } while (0) 28 #endif 29 30 #define set_mb(var, value) \ 31 do { var = value; mb(); } while (0) 32 33 #endif /* __BARRIER_H */ 34