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 __ASM_SMP_MB "\tmb\n" 20#define smp_mb() mb() 21#define smp_rmb() rmb() 22#define smp_wmb() wmb() 23#define smp_read_barrier_depends() read_barrier_depends() 24#else 25#define __ASM_SMP_MB 26#define smp_mb() barrier() 27#define smp_rmb() barrier() 28#define smp_wmb() barrier() 29#define smp_read_barrier_depends() do { } while (0) 30#endif 31 32#define set_mb(var, value) \ 33do { var = value; mb(); } while (0) 34 35#endif /* __BARRIER_H */ 36