Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #include <linux/compiler.h>
0003 #if defined(__i386__) || defined(__x86_64__)
0004 #include "../../arch/x86/include/asm/barrier.h"
0005 #elif defined(__arm__)
0006 #include "../../arch/arm/include/asm/barrier.h"
0007 #elif defined(__aarch64__)
0008 #include "../../arch/arm64/include/asm/barrier.h"
0009 #elif defined(__powerpc__)
0010 #include "../../arch/powerpc/include/asm/barrier.h"
0011 #elif defined(__s390__)
0012 #include "../../arch/s390/include/asm/barrier.h"
0013 #elif defined(__sh__)
0014 #include "../../arch/sh/include/asm/barrier.h"
0015 #elif defined(__sparc__)
0016 #include "../../arch/sparc/include/asm/barrier.h"
0017 #elif defined(__tile__)
0018 #include "../../arch/tile/include/asm/barrier.h"
0019 #elif defined(__alpha__)
0020 #include "../../arch/alpha/include/asm/barrier.h"
0021 #elif defined(__mips__)
0022 #include "../../arch/mips/include/asm/barrier.h"
0023 #elif defined(__ia64__)
0024 #include "../../arch/ia64/include/asm/barrier.h"
0025 #elif defined(__xtensa__)
0026 #include "../../arch/xtensa/include/asm/barrier.h"
0027 #else
0028 #include <asm-generic/barrier.h>
0029 #endif
0030 
0031 /*
0032  * Generic fallback smp_*() definitions for archs that haven't
0033  * been updated yet.
0034  */
0035 
0036 #ifndef smp_rmb
0037 # define smp_rmb()  rmb()
0038 #endif
0039 
0040 #ifndef smp_wmb
0041 # define smp_wmb()  wmb()
0042 #endif
0043 
0044 #ifndef smp_mb
0045 # define smp_mb()   mb()
0046 #endif
0047 
0048 #ifndef smp_store_release
0049 # define smp_store_release(p, v)        \
0050 do {                        \
0051     smp_mb();               \
0052     WRITE_ONCE(*p, v);          \
0053 } while (0)
0054 #endif
0055 
0056 #ifndef smp_load_acquire
0057 # define smp_load_acquire(p)            \
0058 ({                      \
0059     typeof(*p) ___p1 = READ_ONCE(*p);   \
0060     smp_mb();               \
0061     ___p1;                  \
0062 })
0063 #endif