diff options
Diffstat (limited to 'arch/arm64/include/asm/cmpxchg.h')
| -rw-r--r-- | arch/arm64/include/asm/cmpxchg.h | 4 | 
1 files changed, 3 insertions, 1 deletions
| diff --git a/arch/arm64/include/asm/cmpxchg.h b/arch/arm64/include/asm/cmpxchg.h index 4f5fd2a36e6e..3b0938281541 100644 --- a/arch/arm64/include/asm/cmpxchg.h +++ b/arch/arm64/include/asm/cmpxchg.h @@ -204,7 +204,9 @@ static inline void __cmpwait_case_##name(volatile void *ptr,		\  	unsigned long tmp;						\  									\  	asm volatile(							\ -	"	ldxr" #sz "\t%" #w "[tmp], %[v]\n"		\ +	"	sevl\n"							\ +	"	wfe\n"							\ +	"	ldxr" #sz "\t%" #w "[tmp], %[v]\n"			\  	"	eor	%" #w "[tmp], %" #w "[tmp], %" #w "[val]\n"	\  	"	cbnz	%" #w "[tmp], 1f\n"				\  	"	wfe\n"							\ |