xref: /kvm-unit-tests/lib/arm/asm/barrier.h (revision 5e61cba06248d9f2926804b7fb900fe9d721e86c)
1*5e61cba0SAndrew Jones #ifndef _ASMARM_BARRIER_H_
2*5e61cba0SAndrew Jones #define _ASMARM_BARRIER_H_
3*5e61cba0SAndrew Jones /*
4*5e61cba0SAndrew Jones  * Adapted form arch/arm/include/asm/barrier.h
5*5e61cba0SAndrew Jones  */
6*5e61cba0SAndrew Jones 
7*5e61cba0SAndrew Jones #define isb(option) __asm__ __volatile__ ("isb " #option : : : "memory")
8*5e61cba0SAndrew Jones #define dsb(option) __asm__ __volatile__ ("dsb " #option : : : "memory")
9*5e61cba0SAndrew Jones #define dmb(option) __asm__ __volatile__ ("dmb " #option : : : "memory")
10*5e61cba0SAndrew Jones 
11*5e61cba0SAndrew Jones #define mb()		dsb()
12*5e61cba0SAndrew Jones #define rmb()		dsb()
13*5e61cba0SAndrew Jones #define wmb()		dsb(st)
14*5e61cba0SAndrew Jones #define smp_mb()	dmb(ish)
15*5e61cba0SAndrew Jones #define smp_rmb()	smp_mb()
16*5e61cba0SAndrew Jones #define smp_wmb()	dmb(ishst)
17*5e61cba0SAndrew Jones 
18*5e61cba0SAndrew Jones #endif /* _ASMARM_BARRIER_H_ */
19