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

Commit ede8e2bb authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman
Browse files

powerpc/64: implement spin loop primitives

parent fd851a3c
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -428,6 +428,26 @@ static inline unsigned long __pack_fe01(unsigned int fpmode)

#ifdef CONFIG_PPC64
#define cpu_relax()	do { HMT_low(); HMT_medium(); barrier(); } while (0)

#define spin_begin()	HMT_low()

#define spin_cpu_relax()	barrier()

#define spin_cpu_yield()	spin_cpu_relax()

#define spin_end()	HMT_medium()

#define spin_until_cond(cond)					\
do {								\
	if (unlikely(!(cond))) {				\
		spin_begin();					\
		do {						\
			spin_cpu_relax();			\
		} while (!(cond));				\
		spin_end();					\
	}							\
} while (0)

#else
#define cpu_relax()	barrier()
#endif