xref: /kvm-unit-tests/lib/riscv/asm/barrier.h (revision dfc1fec2fbde04ad607e1aed560cf7059350c70f)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #ifndef _ASMRISCV_BARRIER_H_
3 #define _ASMRISCV_BARRIER_H_
4 
5 #define RISCV_FENCE(p, s) \
6 	__asm__ __volatile__ ("fence " #p "," #s : : : "memory")
7 
8 /* These barriers need to enforce ordering on both devices or memory. */
9 #define mb()		RISCV_FENCE(iorw,iorw)
10 #define rmb()		RISCV_FENCE(ir,ir)
11 #define wmb()		RISCV_FENCE(ow,ow)
12 
13 #endif /* _ASMRISCV_BARRIER_H_ */
14