summaryrefslogtreecommitdiffstats
path: root/src/vppinfra
diff options
context:
space:
mode:
Diffstat (limited to 'src/vppinfra')
-rw-r--r--src/vppinfra/smp.h2
-rw-r--r--src/vppinfra/timer.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/src/vppinfra/smp.h b/src/vppinfra/smp.h
index 7e703b3d6aa..e4ab66ad5c3 100644
--- a/src/vppinfra/smp.h
+++ b/src/vppinfra/smp.h
@@ -47,6 +47,8 @@
#if defined (i386) || defined (__x86_64__)
#define clib_smp_pause() do { asm volatile ("pause"); } while (0)
+#elif defined (__aarch64__) || defined (__arm__)
+#define clib_smp_pause() do { asm volatile ("isb" ::: "memory"); } while (0)
#endif
#ifndef clib_smp_pause
diff --git a/src/vppinfra/timer.c b/src/vppinfra/timer.c
index 0221cb749a1..85149dc6b00 100644
--- a/src/vppinfra/timer.c
+++ b/src/vppinfra/timer.c
@@ -41,6 +41,7 @@
#include <sys/param.h>
#include <vppinfra/vec.h>
+#include <vppinfra/smp.h>
#include <vppinfra/time.h>
#include <vppinfra/timer.h>
#include <vppinfra/error.h>
@@ -283,7 +284,7 @@ bar_t b = { limit:10 };
timer_call (bar, (any) & b, random_f64 ());
while (vec_len (timers) > 0)
- sched_yield ();
+ os_sched_yield ();
if (vec_len (foos) > 0)
{