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