blob: 0e1904cf507e358ba6f4dea4b1cc6e6e1389a860 [file] [log] [blame] [edit]
#ifndef _ASMARM64_BARRIER_H_
#define _ASMARM64_BARRIER_H_
/*
* From Linux arch/arm64/include/asm/barrier.h
*
* Copyright (C) 2017, Red Hat Inc, Andrew Jones <drjones@redhat.com>
*
* This work is licensed under the terms of the GNU GPL, version 2.
*/
#define sev() asm volatile("sev" : : : "memory")
#define wfe() asm volatile("wfe" : : : "memory")
#define wfi() asm volatile("wfi" : : : "memory")
#define yield() asm volatile("yield" : : : "memory")
#define cpu_relax() yield()
#define isb() asm volatile("isb" : : : "memory")
#define dmb(opt) asm volatile("dmb " #opt : : : "memory")
#define dsb(opt) asm volatile("dsb " #opt : : : "memory")
#define mb() dsb(sy)
#define rmb() dsb(ld)
#define wmb() dsb(st)
#define smp_mb() dmb(ish)
#define smp_rmb() dmb(ishld)
#define smp_wmb() dmb(ishst)
#endif /* _ASMARM64_BARRIER_H_ */