xref: /OK3568_Linux_fs/kernel/arch/alpha/include/asm/barrier.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef __BARRIER_H
3*4882a593Smuzhiyun #define __BARRIER_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #define mb()	__asm__ __volatile__("mb": : :"memory")
6*4882a593Smuzhiyun #define rmb()	__asm__ __volatile__("mb": : :"memory")
7*4882a593Smuzhiyun #define wmb()	__asm__ __volatile__("wmb": : :"memory")
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #define __smp_load_acquire(p)						\
10*4882a593Smuzhiyun ({									\
11*4882a593Smuzhiyun 	compiletime_assert_atomic_type(*p);				\
12*4882a593Smuzhiyun 	__READ_ONCE(*p);						\
13*4882a593Smuzhiyun })
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #ifdef CONFIG_SMP
16*4882a593Smuzhiyun #define __ASM_SMP_MB	"\tmb\n"
17*4882a593Smuzhiyun #else
18*4882a593Smuzhiyun #define __ASM_SMP_MB
19*4882a593Smuzhiyun #endif
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #include <asm-generic/barrier.h>
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #endif		/* __BARRIER_H */
24