diff options
Diffstat (limited to 'libcpu')
| -rw-r--r-- | libcpu/arm/common/atomic_arm.c | 4 | ||||
| -rw-r--r-- | libcpu/risc-v/common/atomic_riscv.c | 2 |
2 files changed, 3 insertions, 3 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; diff --git a/libcpu/risc-v/common/atomic_riscv.c b/libcpu/risc-v/common/atomic_riscv.c index 8a9ef2c8f5..6a8cb99787 100644 --- a/libcpu/risc-v/common/atomic_riscv.c +++ b/libcpu/risc-v/common/atomic_riscv.c @@ -120,7 +120,7 @@ void rt_hw_atomic_flag_clear(volatile rt_atomic_t *ptr) #endif } -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 tmp = *old; rt_atomic_t result; |
