139ac3f84SAndrew Jones #ifndef _ASMARM64_BARRIER_H_ 239ac3f84SAndrew Jones #define _ASMARM64_BARRIER_H_ 339ac3f84SAndrew Jones /* 439ac3f84SAndrew Jones * From Linux arch/arm64/include/asm/barrier.h 5*49f758b8SAndrew Jones * 6*49f758b8SAndrew Jones * Copyright (C) 2017, Red Hat Inc, Andrew Jones <drjones@redhat.com> 7*49f758b8SAndrew Jones * 8*49f758b8SAndrew Jones * This work is licensed under the terms of the GNU GPL, version 2. 939ac3f84SAndrew Jones */ 1039ac3f84SAndrew Jones 1144bd4c1dSAndrew Jones #define sev() asm volatile("sev" : : : "memory") 1244bd4c1dSAndrew Jones #define wfe() asm volatile("wfe" : : : "memory") 1344bd4c1dSAndrew Jones #define wfi() asm volatile("wfi" : : : "memory") 1481f05653SAndrew Jones #define yield() asm volatile("yield" : : : "memory") 1581f05653SAndrew Jones #define cpu_relax() yield() 1644bd4c1dSAndrew Jones 1739ac3f84SAndrew Jones #define isb() asm volatile("isb" : : : "memory") 1839ac3f84SAndrew Jones #define dmb(opt) asm volatile("dmb " #opt : : : "memory") 1939ac3f84SAndrew Jones #define dsb(opt) asm volatile("dsb " #opt : : : "memory") 2039ac3f84SAndrew Jones #define mb() dsb(sy) 2139ac3f84SAndrew Jones #define rmb() dsb(ld) 2239ac3f84SAndrew Jones #define wmb() dsb(st) 2339ac3f84SAndrew Jones #define smp_mb() dmb(ish) 2439ac3f84SAndrew Jones #define smp_rmb() dmb(ishld) 2539ac3f84SAndrew Jones #define smp_wmb() dmb(ishst) 2639ac3f84SAndrew Jones 2739ac3f84SAndrew Jones #endif /* _ASMARM64_BARRIER_H_ */ 28