compat_barrier.h (766B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Copyright (C) 2018 ARM Limited 4 */ 5#ifndef __COMPAT_BARRIER_H 6#define __COMPAT_BARRIER_H 7 8#ifndef __ASSEMBLY__ 9/* 10 * Warning: This code is meant to be used with 11 * ENABLE_COMPAT_VDSO only. 12 */ 13#ifndef ENABLE_COMPAT_VDSO 14#error This header is meant to be used with ENABLE_COMPAT_VDSO only 15#endif 16 17#ifdef dmb 18#undef dmb 19#endif 20 21#define dmb(option) __asm__ __volatile__ ("dmb " #option : : : "memory") 22 23#define aarch32_smp_mb() dmb(ish) 24#define aarch32_smp_rmb() dmb(ishld) 25#define aarch32_smp_wmb() dmb(ishst) 26 27#undef smp_mb 28#undef smp_rmb 29#undef smp_wmb 30 31#define smp_mb() aarch32_smp_mb() 32#define smp_rmb() aarch32_smp_rmb() 33#define smp_wmb() aarch32_smp_wmb() 34 35#endif /* !__ASSEMBLY__ */ 36 37#endif /* __COMPAT_BARRIER_H */