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