[PATCH] alpha: atomic dependency fix
[linux-2.6/mini2440.git] / include / asm-alpha / barrier.h
blob229c83fe77cb29d97c9136f1728316b1ca48cec6
1 #ifndef __BARRIER_H
2 #define __BARRIER_H
4 #define mb() \
5 __asm__ __volatile__("mb": : :"memory")
7 #define rmb() \
8 __asm__ __volatile__("mb": : :"memory")
10 #define wmb() \
11 __asm__ __volatile__("wmb": : :"memory")
13 #define read_barrier_depends() \
14 __asm__ __volatile__("mb": : :"memory")
16 #ifdef CONFIG_SMP
17 #define smp_mb() mb()
18 #define smp_rmb() rmb()
19 #define smp_wmb() wmb()
20 #define smp_read_barrier_depends() read_barrier_depends()
21 #else
22 #define smp_mb() barrier()
23 #define smp_rmb() barrier()
24 #define smp_wmb() barrier()
25 #define smp_read_barrier_depends() barrier()
26 #endif
28 #define set_mb(var, value) \
29 do { var = value; mb(); } while (0)
31 #define set_wmb(var, value) \
32 do { var = value; wmb(); } while (0)
34 #endif /* __BARRIER_H */