From a2689ab2500ceb44ead14de554303dd209d42898 Mon Sep 17 00:00:00 2001 From: David Carlier Date: Tue, 14 Apr 2020 15:30:30 +0200 Subject: [PATCH] unix: implement cpu_relax() for arm Emits yield instruction in ARM mode (mainly needs to pass -march=...). PR-URL: https://github.com/libuv/libuv/pull/2751 Reviewed-By: Anna Henningsen Reviewed-By: Ben Noordhuis Reviewed-By: Richard Lau --- src/unix/atomic-ops.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/unix/atomic-ops.h b/src/unix/atomic-ops.h index bc37c0d4..347d1936 100644 --- a/src/unix/atomic-ops.h +++ b/src/unix/atomic-ops.h @@ -53,6 +53,8 @@ UV_UNUSED(static int cmpxchgi(int* ptr, int oldval, int newval)) { UV_UNUSED(static void cpu_relax(void)) { #if defined(__i386__) || defined(__x86_64__) __asm__ __volatile__ ("rep; nop"); /* a.k.a. PAUSE */ +#elif (defined(__arm__) && __ARM_ARCH >= 7) || defined(__aarch64__) + __asm__ volatile("yield"); #endif }