Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 003472a9 authored by Michael S. Tsirkin's avatar Michael S. Tsirkin
Browse files

powerpc: define __smp_xxx



This defines __smp_xxx barriers for powerpc
for use by virtualization.

smp_xxx barriers are removed as they are
defined correctly by asm-generic/barriers.h

This reduces the amount of arch-specific boiler-plate code.

Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Acked-by: default avatarBoqun Feng <boqun.feng@gmail.com>
Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
parent a9e4252a
Loading
Loading
Loading
Loading
+8 −16
Original line number Diff line number Diff line
@@ -44,19 +44,11 @@
#define dma_rmb()	__lwsync()
#define dma_wmb()	__asm__ __volatile__ (stringify_in_c(SMPWMB) : : :"memory")

#ifdef CONFIG_SMP
#define smp_lwsync()	__lwsync()
#define __smp_lwsync()	__lwsync()

#define smp_mb()	mb()
#define smp_rmb()	__lwsync()
#define smp_wmb()	__asm__ __volatile__ (stringify_in_c(SMPWMB) : : :"memory")
#else
#define smp_lwsync()	barrier()

#define smp_mb()	barrier()
#define smp_rmb()	barrier()
#define smp_wmb()	barrier()
#endif /* CONFIG_SMP */
#define __smp_mb()	mb()
#define __smp_rmb()	__lwsync()
#define __smp_wmb()	__asm__ __volatile__ (stringify_in_c(SMPWMB) : : :"memory")

/*
 * This is a barrier which prevents following instructions from being
@@ -67,18 +59,18 @@
#define data_barrier(x)	\
	asm volatile("twi 0,%0,0; isync" : : "r" (x) : "memory");

#define smp_store_release(p, v)						\
#define __smp_store_release(p, v)						\
do {									\
	compiletime_assert_atomic_type(*p);				\
	smp_lwsync();							\
	__smp_lwsync();							\
	WRITE_ONCE(*p, v);						\
} while (0)

#define smp_load_acquire(p)						\
#define __smp_load_acquire(p)						\
({									\
	typeof(*p) ___p1 = READ_ONCE(*p);				\
	compiletime_assert_atomic_type(*p);				\
	smp_lwsync();							\
	__smp_lwsync();							\
	___p1;								\
})