1 #ifndef _ASMARM64_BARRIER_H_ 2 #define _ASMARM64_BARRIER_H_ 3 /* 4 * From Linux arch/arm64/include/asm/barrier.h 5 * 6 * Copyright (C) 2017, Red Hat Inc, Andrew Jones <drjones@redhat.com> 7 * 8 * This work is licensed under the terms of the GNU GPL, version 2. 9 */ 10 11 #define sev() asm volatile("sev" : : : "memory") 12 #define wfe() asm volatile("wfe" : : : "memory") 13 #define wfi() asm volatile("wfi" : : : "memory") 14 #define yield() asm volatile("yield" : : : "memory") 15 #define cpu_relax() yield() 16 17 #define isb() asm volatile("isb" : : : "memory") 18 #define dmb(opt) asm volatile("dmb " #opt : : : "memory") 19 #define dsb(opt) asm volatile("dsb " #opt : : : "memory") 20 #define mb() dsb(sy) 21 #define rmb() dsb(ld) 22 #define wmb() dsb(st) 23 #define smp_mb() dmb(ish) 24 #define smp_rmb() dmb(ishld) 25 #define smp_wmb() dmb(ishst) 26 27 #endif /* _ASMARM64_BARRIER_H_ */ 28