Index: kernel/arch/amd64/include/arch/asm.h
===================================================================
--- kernel/arch/amd64/include/arch/asm.h	(revision f43d8cef17ca84bb86ea598fe7053f90fc5d9fa0)
+++ kernel/arch/amd64/include/arch/asm.h	(revision 2b264c4d5e2f74497c27c64df3d210b4b1899af2)
@@ -58,4 +58,6 @@
 	}
 }
+
+#define ARCH_SPIN_HINT() asm volatile ("pause\n")
 
 /** Byte from port
Index: kernel/arch/arm32/include/arch/asm.h
===================================================================
--- kernel/arch/arm32/include/arch/asm.h	(revision f43d8cef17ca84bb86ea598fe7053f90fc5d9fa0)
+++ kernel/arch/arm32/include/arch/asm.h	(revision 2b264c4d5e2f74497c27c64df3d210b4b1899af2)
@@ -65,4 +65,8 @@
 }
 
+#ifdef PROCESSOR_ARCH_armv7_a
+#define ARCH_SPIN_HINT() asm volatile ("yield")
+#endif
+
 _NO_TRACE static inline void pio_write_8(ioport8_t *port, uint8_t v)
 {
Index: kernel/arch/arm64/include/arch/asm.h
===================================================================
--- kernel/arch/arm64/include/arch/asm.h	(revision f43d8cef17ca84bb86ea598fe7053f90fc5d9fa0)
+++ kernel/arch/arm64/include/arch/asm.h	(revision 2b264c4d5e2f74497c27c64df3d210b4b1899af2)
@@ -60,4 +60,6 @@
 		;
 }
+
+#define ARCH_SPIN_HINT() asm volatile ("yield")
 
 /** Output byte to port.
Index: kernel/arch/ia32/include/arch/asm.h
===================================================================
--- kernel/arch/ia32/include/arch/asm.h	(revision f43d8cef17ca84bb86ea598fe7053f90fc5d9fa0)
+++ kernel/arch/ia32/include/arch/asm.h	(revision 2b264c4d5e2f74497c27c64df3d210b4b1899af2)
@@ -63,4 +63,6 @@
 	);
 }
+
+#define ARCH_SPIN_HINT() asm volatile ("pause\n")
 
 #define GEN_READ_REG(reg) _NO_TRACE static inline sysarg_t read_ ##reg (void) \
Index: kernel/generic/src/synch/spinlock.c
===================================================================
--- kernel/generic/src/synch/spinlock.c	(revision f43d8cef17ca84bb86ea598fe7053f90fc5d9fa0)
+++ kernel/generic/src/synch/spinlock.c	(revision 2b264c4d5e2f74497c27c64df3d210b4b1899af2)
@@ -37,4 +37,5 @@
  */
 
+#include <arch/asm.h>
 #include <synch/spinlock.h>
 #include <atomic.h>
@@ -47,4 +48,8 @@
 #include <stacktrace.h>
 #include <cpu.h>
+
+#ifndef ARCH_SPIN_HINT
+#define ARCH_SPIN_HINT() ((void)0)
+#endif
 
 /** Initialize spinlock
@@ -77,4 +82,6 @@
 
 	while (atomic_flag_test_and_set_explicit(&lock->flag, memory_order_acquire)) {
+		ARCH_SPIN_HINT();
+
 #ifdef CONFIG_DEBUG_SPINLOCK
 		/*
