1 #ifndef __ASM_MCS_LOCK_H 2 #define __ASM_MCS_LOCK_H 3 4 #ifdef CONFIG_SMP 5 #include <asm/spinlock.h> 6 7 /* MCS spin-locking. */ 8 #define arch_mcs_spin_lock_contended(lock) \ 9 do { \ 10 /* Ensure prior stores are observed before we enter wfe. */ \ 11 smp_mb(); \ 12 while (!(smp_load_acquire(lock))) \ 13 wfe(); \ 14 } while (0) \ 15 16 #define arch_mcs_spin_unlock_contended(lock) \ 17 do { \ 18 smp_store_release(lock, 1); \ 19 dsb_sev(); \ 20 } while (0) 21 22 #endif /* CONFIG_SMP */ 23 #endif /* __ASM_MCS_LOCK_H */ 24