Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright (C) 2018 ARM Limited
0004  */
0005 #ifndef __COMPAT_BARRIER_H
0006 #define __COMPAT_BARRIER_H
0007 
0008 #ifndef __ASSEMBLY__
0009 /*
0010  * Warning: This code is meant to be used with
0011  * ENABLE_COMPAT_VDSO only.
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 /* !__ASSEMBLY__ */
0036 
0037 #endif /* __COMPAT_BARRIER_H */