summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vespalib/src/vespa/vespalib/util/time.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/vespalib/src/vespa/vespalib/util/time.cpp b/vespalib/src/vespa/vespalib/util/time.cpp
index 341102bf9ff..a732eb215fb 100644
--- a/vespalib/src/vespa/vespalib/util/time.cpp
+++ b/vespalib/src/vespa/vespalib/util/time.cpp
@@ -2,7 +2,9 @@
#include "time.h"
#include <thread>
+#ifdef __x86_64__
#include <immintrin.h>
+#endif
namespace vespalib {
@@ -43,7 +45,13 @@ Timer::waitAtLeast(duration dur, bool busyWait) {
steady_clock::time_point deadline = steady_clock::now() + dur;
while (steady_clock::now() < deadline) {
for (int i = 0; i < 1000; i++) {
+#if defined(__x86_64__)
_mm_pause();
+#elif defined(__aarch64__)
+ __asm__ __volatile__ ("yield");
+#else
+#warning "Missing yield"
+#endif
}
}
} else {