15e61cba0SAndrew Jones #ifndef _ASMARM_BARRIER_H_ 25e61cba0SAndrew Jones #define _ASMARM_BARRIER_H_ 35e61cba0SAndrew Jones /* 45e61cba0SAndrew Jones * Adapted form arch/arm/include/asm/barrier.h 55e61cba0SAndrew Jones */ 65e61cba0SAndrew Jones 7*44bd4c1dSAndrew Jones #define sev() asm volatile("sev" : : : "memory") 8*44bd4c1dSAndrew Jones #define wfe() asm volatile("wfe" : : : "memory") 9*44bd4c1dSAndrew Jones #define wfi() asm volatile("wfi" : : : "memory") 10*44bd4c1dSAndrew Jones #define cpu_relax() asm volatile("" : : : "memory") 11*44bd4c1dSAndrew Jones 125e61cba0SAndrew Jones #define isb(option) __asm__ __volatile__ ("isb " #option : : : "memory") 135e61cba0SAndrew Jones #define dsb(option) __asm__ __volatile__ ("dsb " #option : : : "memory") 145e61cba0SAndrew Jones #define dmb(option) __asm__ __volatile__ ("dmb " #option : : : "memory") 155e61cba0SAndrew Jones 165e61cba0SAndrew Jones #define mb() dsb() 175e61cba0SAndrew Jones #define rmb() dsb() 185e61cba0SAndrew Jones #define wmb() dsb(st) 195e61cba0SAndrew Jones #define smp_mb() dmb(ish) 205e61cba0SAndrew Jones #define smp_rmb() smp_mb() 215e61cba0SAndrew Jones #define smp_wmb() dmb(ishst) 225e61cba0SAndrew Jones 235e61cba0SAndrew Jones #endif /* _ASMARM_BARRIER_H_ */ 24