Skip to content

Commit 9662e40

Browse files
authored
Merge pull request #14001 from kjbracey-arm/mbed-os-atomic
Add missing retry to atomic exchange
2 parents 0169915 + 0b30742 commit 9662e40

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

platform/include/platform/internal/mbed_atomic_impl.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,9 @@ inline T core_util_atomic_exchange_##fn_suffix(volatile T *valuePtr, T newValue)
346346
T oldValue; \
347347
uint32_t fail; \
348348
MBED_BARRIER(); \
349-
DO_MBED_LOCKFREE_EXCHG_ASM(M); \
349+
do { \
350+
DO_MBED_LOCKFREE_EXCHG_ASM(M); \
351+
} while (fail); \
350352
MBED_BARRIER(); \
351353
return oldValue; \
352354
} \
@@ -357,7 +359,9 @@ MBED_FORCEINLINE T core_util_atomic_exchange_explicit_##fn_suffix(
357359
T oldValue; \
358360
uint32_t fail; \
359361
MBED_RELEASE_BARRIER(order); \
360-
DO_MBED_LOCKFREE_EXCHG_ASM(M); \
362+
do { \
363+
DO_MBED_LOCKFREE_EXCHG_ASM(M); \
364+
} while (fail); \
361365
MBED_ACQUIRE_BARRIER(order); \
362366
return oldValue; \
363367
}

0 commit comments

Comments
 (0)