diff options
Diffstat (limited to 'libcpu/arm')
| -rw-r--r-- | libcpu/arm/common/atomic_arm.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libcpu/arm/common/atomic_arm.c b/libcpu/arm/common/atomic_arm.c index 81ada079f3..bcdb496317 100644 --- a/libcpu/arm/common/atomic_arm.c +++ b/libcpu/arm/common/atomic_arm.c @@ -77,7 +77,7 @@ rt_atomic_t rt_hw_atomic_load(volatile rt_atomic_t *ptr) { oldval = __LDREXW(ptr); } while ((__STREXW(oldval, ptr)) != 0U); - return *ptr; + return oldval; } void rt_hw_atomic_store(volatile rt_atomic_t *ptr, rt_atomic_t val) @@ -166,7 +166,7 @@ rt_atomic_t rt_hw_atomic_flag_test_and_set(volatile rt_atomic_t *ptr) return oldval; } -rt_atomic_t rt_hw_atomic_compare_exchange_strong(volatile rt_atomic_t *ptr, rt_atomic_t *old, rt_atomic_t new) +rt_atomic_t rt_hw_atomic_compare_exchange_strong(volatile rt_atomic_t *ptr, volatile rt_atomic_t *old, rt_atomic_t new) { rt_atomic_t result; rt_atomic_t temp = *old; |
