jaruga / rpms / bowtie

Forked from rpms/bowtie 4 years ago
Clone
Blob Blame History Raw
From ea04fb256aa01ca1252613c5d5de3c9e2d6327ee Mon Sep 17 00:00:00 2001
From: Rone Charles <rone_charles@fastmail.com>
Date: Mon, 27 Jul 2020 19:19:34 -0400
Subject: [PATCH] Potential fix for cpu_backoff related errors on ppc

---
 bt2_locks.h | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/bt2_locks.h b/bt2_locks.h
index b956ea4..cddbd8b 100644
--- a/bt2_locks.h
+++ b/bt2_locks.h
@@ -12,13 +12,17 @@
 class cpu_backoff {
 public:
 	cpu_backoff(): count(1) {}
-	void pause() {
+	inline void pause() {
 		if (count <= LOOPS_BEFORE_YIELD) {
 			for (int32_t i = 0; i < count; i++) {
 #ifdef __aarch64__
 				__asm__ __volatile__("yield" ::: "memory");
-#else
+#elif __ppc__
+				__asm__ __volatile__("or 27,27,27" ::: "memory");
+#elif __x86_64__
 				__asm__ __volatile__("pause;");
+#else
+				// do nothing
 #endif
 			}
 			count *= 2;
-- 
2.26.2