diff options
Diffstat (limited to 'tools/arch/powerpc/include')
| -rw-r--r-- | tools/arch/powerpc/include/asm/barrier.h | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/tools/arch/powerpc/include/asm/barrier.h b/tools/arch/powerpc/include/asm/barrier.h index a634da05bc97..905a2c66d96d 100644 --- a/tools/arch/powerpc/include/asm/barrier.h +++ b/tools/arch/powerpc/include/asm/barrier.h @@ -27,4 +27,20 @@  #define rmb()  __asm__ __volatile__ ("sync" : : : "memory")  #define wmb()  __asm__ __volatile__ ("sync" : : : "memory") +#if defined(__powerpc64__) +#define smp_lwsync()	__asm__ __volatile__ ("lwsync" : : : "memory") + +#define smp_store_release(p, v)			\ +do {						\ +	smp_lwsync();				\ +	WRITE_ONCE(*p, v);			\ +} while (0) + +#define smp_load_acquire(p)			\ +({						\ +	typeof(*p) ___p1 = READ_ONCE(*p);	\ +	smp_lwsync();				\ +	___p1;					\ +}) +#endif /* defined(__powerpc64__) */  #endif /* _TOOLS_LINUX_ASM_POWERPC_BARRIER_H */ |