diff options
Diffstat (limited to 'tools/include/asm/barrier.h')
| -rw-r--r-- | tools/include/asm/barrier.h | 35 | 
1 files changed, 35 insertions, 0 deletions
diff --git a/tools/include/asm/barrier.h b/tools/include/asm/barrier.h index 391d942536e5..8d378c57cb01 100644 --- a/tools/include/asm/barrier.h +++ b/tools/include/asm/barrier.h @@ -1,4 +1,5 @@  /* SPDX-License-Identifier: GPL-2.0 */ +#include <linux/compiler.h>  #if defined(__i386__) || defined(__x86_64__)  #include "../../arch/x86/include/asm/barrier.h"  #elif defined(__arm__) @@ -26,3 +27,37 @@  #else  #include <asm-generic/barrier.h>  #endif + +/* + * Generic fallback smp_*() definitions for archs that haven't + * been updated yet. + */ + +#ifndef smp_rmb +# define smp_rmb()	rmb() +#endif + +#ifndef smp_wmb +# define smp_wmb()	wmb() +#endif + +#ifndef smp_mb +# define smp_mb()	mb() +#endif + +#ifndef smp_store_release +# define smp_store_release(p, v)		\ +do {						\ +	smp_mb();				\ +	WRITE_ONCE(*p, v);			\ +} while (0) +#endif + +#ifndef smp_load_acquire +# define smp_load_acquire(p)			\ +({						\ +	typeof(*p) ___p1 = READ_ONCE(*p);	\ +	smp_mb();				\ +	___p1;					\ +}) +#endif  | 
