diff options
Diffstat (limited to 'arch/s390/include/asm/barrier.h')
| -rw-r--r-- | arch/s390/include/asm/barrier.h | 20 | 
1 files changed, 18 insertions, 2 deletions
diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h index 16760eeb79b..19ff956b752 100644 --- a/arch/s390/include/asm/barrier.h +++ b/arch/s390/include/asm/barrier.h @@ -27,9 +27,25 @@  #define smp_rmb()			rmb()  #define smp_wmb()			wmb()  #define smp_read_barrier_depends()	read_barrier_depends() -#define smp_mb__before_clear_bit()	smp_mb() -#define smp_mb__after_clear_bit()	smp_mb() + +#define smp_mb__before_atomic()		smp_mb() +#define smp_mb__after_atomic()		smp_mb()  #define set_mb(var, value)		do { var = value; mb(); } while (0) +#define smp_store_release(p, v)						\ +do {									\ +	compiletime_assert_atomic_type(*p);				\ +	barrier();							\ +	ACCESS_ONCE(*p) = (v);						\ +} while (0) + +#define smp_load_acquire(p)						\ +({									\ +	typeof(*p) ___p1 = ACCESS_ONCE(*p);				\ +	compiletime_assert_atomic_type(*p);				\ +	barrier();							\ +	___p1;								\ +}) +  #endif /* __ASM_BARRIER_H */  | 
