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