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() barrier() 28#endif 29 30#define set_mb(var, value) \ 31do { var = value; mb(); } while (0) 32 33#endif /* __BARRIER_H */ 34