1 #ifndef _ASMARM_BARRIER_H_ 2 #define _ASMARM_BARRIER_H_ 3 /* 4 * Adapted from arch/arm/include/asm/barrier.h 5 */ 6 7 #define sev() asm volatile("sev" : : : "memory") 8 #define wfe() asm volatile("wfe" : : : "memory") 9 #define wfi() asm volatile("wfi" : : : "memory") 10 #define yield() asm volatile("yield" : : : "memory") 11 #define cpu_relax() yield() 12 13 #define isb(option) __asm__ __volatile__ ("isb " #option : : : "memory") 14 #define dsb(option) __asm__ __volatile__ ("dsb " #option : : : "memory") 15 #define dmb(option) __asm__ __volatile__ ("dmb " #option : : : "memory") 16 17 #define mb() dsb() 18 #define rmb() dsb() 19 #define wmb() dsb(st) 20 #define smp_mb() dmb(ish) 21 #define smp_rmb() smp_mb() 22 #define smp_wmb() dmb(ishst) 23 24 #endif /* _ASMARM_BARRIER_H_ */ 25