diff options
-rw-r--r-- | vespalib/src/vespa/vespalib/util/time.cpp | 8 |
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 { |