| 1 |
|
| 2 | #include <linux/compiler.h>
|
| 3 | #if defined(__i386__) || defined(__x86_64__)
|
| 4 | #include "../../arch/x86/include/asm/barrier.h"
|
| 5 | #elif defined(__arm__)
|
| 6 | #include "../../arch/arm/include/asm/barrier.h"
|
| 7 | #elif defined(__aarch64__)
|
| 8 | #include "../../arch/arm64/include/asm/barrier.h"
|
| 9 | #elif defined(__powerpc__)
|
| 10 | #include "../../arch/powerpc/include/asm/barrier.h"
|
| 11 | #elif defined(__riscv)
|
| 12 | #include "../../arch/riscv/include/asm/barrier.h"
|
| 13 | #elif defined(__s390__)
|
| 14 | #include "../../arch/s390/include/asm/barrier.h"
|
| 15 | #elif defined(__sh__)
|
| 16 | #include "../../arch/sh/include/asm/barrier.h"
|
| 17 | #elif defined(__sparc__)
|
| 18 | #include "../../arch/sparc/include/asm/barrier.h"
|
| 19 | #elif defined(__tile__)
|
| 20 | #include "../../arch/tile/include/asm/barrier.h"
|
| 21 | #elif defined(__alpha__)
|
| 22 | #include "../../arch/alpha/include/asm/barrier.h"
|
| 23 | #elif defined(__mips__)
|
| 24 | #include "../../arch/mips/include/asm/barrier.h"
|
| 25 | #elif defined(__ia64__)
|
| 26 | #include "../../arch/ia64/include/asm/barrier.h"
|
| 27 | #elif defined(__xtensa__)
|
| 28 | #include "../../arch/xtensa/include/asm/barrier.h"
|
| 29 | #else
|
| 30 | #include <asm-generic/barrier.h>
|
| 31 | #endif
|
| 32 |
|
| 33 | |
| 34 | * Generic fallback smp_*() definitions for archs that haven't
|
| 35 | * been updated yet.
|
| 36 |
|
| 37 |
|
| 38 | #ifndef smp_rmb
|
| 39 | # define smp_rmb() rmb()
|
| 40 | #endif
|
| 41 |
|
| 42 | #ifndef smp_wmb
|
| 43 | # define smp_wmb() wmb()
|
| 44 | #endif
|
| 45 |
|
| 46 | #ifndef smp_mb
|
| 47 | # define smp_mb() mb()
|
| 48 | #endif
|
| 49 |
|
| 50 | #ifndef smp_store_release
|
| 51 | # define smp_store_release(p, v) \
|
| 52 | do { \
|
| 53 | smp_mb(); \
|
| 54 | WRITE_ONCE(*p, v); \
|
| 55 | } while (0)
|
| 56 | #endif
|
| 57 |
|
| 58 | #ifndef smp_load_acquire
|
| 59 | # define smp_load_acquire(p) \
|
| 60 | ({ \
|
| 61 | typeof(*p) ___p1 = READ_ONCE(*p); \
|
| 62 | smp_mb(); \
|
| 63 | ___p1; \
|
| 64 | })
|
| 65 | #endif
|