0001
0002
0003
0004
0005 #ifndef __COMPAT_BARRIER_H
0006 #define __COMPAT_BARRIER_H
0007
0008 #ifndef __ASSEMBLY__
0009
0010
0011
0012
0013 #ifndef ENABLE_COMPAT_VDSO
0014 #error This header is meant to be used with ENABLE_COMPAT_VDSO only
0015 #endif
0016
0017 #ifdef dmb
0018 #undef dmb
0019 #endif
0020
0021 #define dmb(option) __asm__ __volatile__ ("dmb " #option : : : "memory")
0022
0023 #define aarch32_smp_mb() dmb(ish)
0024 #define aarch32_smp_rmb() dmb(ishld)
0025 #define aarch32_smp_wmb() dmb(ishst)
0026
0027 #undef smp_mb
0028 #undef smp_rmb
0029 #undef smp_wmb
0030
0031 #define smp_mb() aarch32_smp_mb()
0032 #define smp_rmb() aarch32_smp_rmb()
0033 #define smp_wmb() aarch32_smp_wmb()
0034
0035 #endif
0036
0037 #endif