| Andrew Morton | 0db9ae4 | 2005-10-24 23:05:58 -0700 | [diff] [blame] | 1 | #ifndef __BARRIER_H | 
|  | 2 | #define __BARRIER_H | 
|  | 3 |  | 
| Ivan Kokshaysky | 63f324c | 2005-10-29 18:15:43 -0700 | [diff] [blame] | 4 | #include <asm/compiler.h> | 
|  | 5 |  | 
| Andrew Morton | 0db9ae4 | 2005-10-24 23:05:58 -0700 | [diff] [blame] | 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) \ | 
|  | 31 | do { var = value; mb(); } while (0) | 
|  | 32 |  | 
| Andrew Morton | 0db9ae4 | 2005-10-24 23:05:58 -0700 | [diff] [blame] | 33 | #endif		/* __BARRIER_H */ |