|
@@ -204,7 +204,9 @@ static inline void __cmpwait_case_##name(volatile void *ptr, \
|
|
unsigned long tmp; \
|
|
unsigned long tmp; \
|
|
\
|
|
\
|
|
asm volatile( \
|
|
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" \
|
|
" eor %" #w "[tmp], %" #w "[tmp], %" #w "[val]\n" \
|
|
" cbnz %" #w "[tmp], 1f\n" \
|
|
" cbnz %" #w "[tmp], 1f\n" \
|
|
" wfe\n" \
|
|
" wfe\n" \
|