Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/include/asm/barrier.h
26285 views
1
/* SPDX-License-Identifier: GPL-2.0 */
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
66
67