#ifndef __BARRIER_H | |
#define __BARRIER_H | |
#include <asm/compiler.h> | |
#define mb() \ | |
__asm__ __volatile__("mb": : :"memory") | |
#define rmb() \ | |
__asm__ __volatile__("mb": : :"memory") | |
#define wmb() \ | |
__asm__ __volatile__("wmb": : :"memory") | |
#define read_barrier_depends() \ | |
__asm__ __volatile__("mb": : :"memory") | |
#ifdef CONFIG_SMP | |
#define smp_mb() mb() | |
#define smp_rmb() rmb() | |
#define smp_wmb() wmb() | |
#define smp_read_barrier_depends() read_barrier_depends() | |
#else | |
#define smp_mb() barrier() | |
#define smp_rmb() barrier() | |
#define smp_wmb() barrier() | |
#define smp_read_barrier_depends() barrier() | |
#endif | |
#define set_mb(var, value) \ | |
do { var = value; mb(); } while (0) | |
#endif /* __BARRIER_H */ |