xref: /kvm-unit-tests/lib/arm64/asm/barrier.h (revision 39ac3f8494beb048a121f44bf626275b18c66da5)
1*39ac3f84SAndrew Jones #ifndef _ASMARM64_BARRIER_H_
2*39ac3f84SAndrew Jones #define _ASMARM64_BARRIER_H_
3*39ac3f84SAndrew Jones /*
4*39ac3f84SAndrew Jones  * From Linux arch/arm64/include/asm/barrier.h
5*39ac3f84SAndrew Jones  */
6*39ac3f84SAndrew Jones 
7*39ac3f84SAndrew Jones #define isb()		asm volatile("isb" : : : "memory")
8*39ac3f84SAndrew Jones #define dmb(opt)	asm volatile("dmb " #opt : : : "memory")
9*39ac3f84SAndrew Jones #define dsb(opt)	asm volatile("dsb " #opt : : : "memory")
10*39ac3f84SAndrew Jones #define mb()		dsb(sy)
11*39ac3f84SAndrew Jones #define rmb()		dsb(ld)
12*39ac3f84SAndrew Jones #define wmb()		dsb(st)
13*39ac3f84SAndrew Jones #define smp_mb()	dmb(ish)
14*39ac3f84SAndrew Jones #define smp_rmb()	dmb(ishld)
15*39ac3f84SAndrew Jones #define smp_wmb()	dmb(ishst)
16*39ac3f84SAndrew Jones 
17*39ac3f84SAndrew Jones #endif /* _ASMARM64_BARRIER_H_ */
18