xref: /linux/tools/include/asm-generic/barrier.h (revision 4be5e8648b0c287aefc6ac3f3a0b12c696054f43)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copied from the kernel sources to tools/perf/:
4  *
5  * Generic barrier definitions.
6  *
7  * It should be possible to use these on really simple architectures,
8  * but it serves more as a starting point for new ports.
9  *
10  * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
11  * Written by David Howells (dhowells@redhat.com)
12  */
13 #ifndef __TOOLS_LINUX_ASM_GENERIC_BARRIER_H
14 #define __TOOLS_LINUX_ASM_GENERIC_BARRIER_H
15 
16 #ifndef __ASSEMBLY__
17 
18 #include <linux/compiler.h>
19 
20 /*
21  * Force strict CPU ordering. And yes, this is required on UP too when we're
22  * talking to devices.
23  *
24  * Fall back to compiler barriers if nothing better is provided.
25  */
26 
27 #ifndef mb
28 #define mb()	barrier()
29 #endif
30 
31 #ifndef rmb
32 #define rmb()	mb()
33 #endif
34 
35 #ifndef wmb
36 #define wmb()	mb()
37 #endif
38 
39 #endif /* !__ASSEMBLY__ */
40 #endif /* __TOOLS_LINUX_ASM_GENERIC_BARRIER_H */
41