1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-16 01:53:51 +01:00

sys/atomic_utils: fix compilation with C++ compiler

This commit is contained in:
Marian Buschsieweke 2025-12-09 19:11:09 +01:00 committed by Benjamin Valentin
parent 4a326d6c35
commit 1f3daf3335

View File

@ -274,14 +274,14 @@ static inline uint64_t atomic_load_u64(const volatile uint64_t *var);
static inline unsigned atomic_load_unsigned(const volatile unsigned *var) static inline unsigned atomic_load_unsigned(const volatile unsigned *var)
{ {
if (sizeof(uint64_t) == sizeof(unsigned)) { if (sizeof(uint64_t) == sizeof(unsigned)) {
return atomic_load_u64((volatile void *)var); return atomic_load_u64((const volatile uint64_t *)(uintptr_t)var);
} }
if (sizeof(uint32_t) == sizeof(unsigned)) { if (sizeof(uint32_t) == sizeof(unsigned)) {
return atomic_load_u32((volatile void *)var); return atomic_load_u32((const volatile uint32_t *)(uintptr_t)var);
} }
return atomic_load_u16((volatile void *)var); return atomic_load_u16((const volatile uint16_t *)(uintptr_t)var);
} }
/** /**
@ -362,13 +362,13 @@ static inline void atomic_store_u64(volatile uint64_t *dest, uint64_t val);
static inline void atomic_store_unsigned(volatile unsigned *dest, unsigned val) static inline void atomic_store_unsigned(volatile unsigned *dest, unsigned val)
{ {
if (sizeof(uint64_t) == sizeof(unsigned)) { if (sizeof(uint64_t) == sizeof(unsigned)) {
atomic_store_u64((volatile void *)dest, val); atomic_store_u64((volatile uint64_t *)(uintptr_t)dest, val);
} }
else if (sizeof(uint32_t) == sizeof(unsigned)) { else if (sizeof(uint32_t) == sizeof(unsigned)) {
atomic_store_u32((volatile void *)dest, val); atomic_store_u32((volatile uint32_t *)(uintptr_t)dest, val);
} }
else { else {
atomic_store_u16((volatile void *)dest, val); atomic_store_u16((volatile uint16_t *)(uintptr_t)dest, val);
} }
} }
@ -462,14 +462,14 @@ static inline unsigned atomic_fetch_add_unsigned(volatile unsigned *dest,
unsigned summand) unsigned summand)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return atomic_fetch_add_u64((volatile void *)dest, summand); return atomic_fetch_add_u64((volatile uint64_t *)(uintptr_t)dest, summand);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return atomic_fetch_add_u32((volatile void *)dest, summand); return atomic_fetch_add_u32((volatile uint32_t *)(uintptr_t)dest, summand);
} }
return atomic_fetch_add_u16((volatile void *)dest, summand); return atomic_fetch_add_u16((volatile uint16_t *)(uintptr_t)dest, summand);
} }
/** @} */ /** @} */
@ -528,14 +528,14 @@ static inline unsigned atomic_fetch_sub_unsigned(volatile unsigned *dest,
unsigned subtrahend) unsigned subtrahend)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return atomic_fetch_sub_u64((volatile void *)dest, subtrahend); return atomic_fetch_sub_u64((volatile uint64_t *)(uintptr_t)dest, subtrahend);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return atomic_fetch_sub_u32((volatile void *)dest, subtrahend); return atomic_fetch_sub_u32((volatile uint32_t *)(uintptr_t)dest, subtrahend);
} }
return atomic_fetch_sub_u16((volatile void *)dest, subtrahend); return atomic_fetch_sub_u16((volatile uint16_t *)(uintptr_t)dest, subtrahend);
} }
/** @} */ /** @} */
@ -593,14 +593,14 @@ static inline unsigned atomic_fetch_or_unsigned(volatile unsigned *dest,
unsigned val) unsigned val)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return atomic_fetch_or_u64((volatile void *)dest, val); return atomic_fetch_or_u64((volatile uint64_t *)(uintptr_t)dest, val);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return atomic_fetch_or_u32((volatile void *)dest, val); return atomic_fetch_or_u32((volatile uint32_t *)(uintptr_t)dest, val);
} }
return atomic_fetch_or_u16((volatile void *)dest, val); return atomic_fetch_or_u16((volatile uint16_t *)(uintptr_t)dest, val);
} }
/** @} */ /** @} */
@ -658,14 +658,14 @@ static inline unsigned atomic_fetch_xor_unsigned(volatile unsigned *dest,
unsigned val) unsigned val)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return atomic_fetch_xor_u64((volatile void *)dest, val); return atomic_fetch_xor_u64((volatile uint64_t *)(uintptr_t)dest, val);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return atomic_fetch_xor_u32((volatile void *)dest, val); return atomic_fetch_xor_u32((volatile uint32_t *)(uintptr_t)dest, val);
} }
return atomic_fetch_xor_u16((volatile void *)dest, val); return atomic_fetch_xor_u16((volatile uint16_t *)(uintptr_t)dest, val);
} }
/** @} */ /** @} */
@ -723,14 +723,14 @@ static inline unsigned atomic_fetch_and_unsigned(volatile unsigned *dest,
unsigned val) unsigned val)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return atomic_fetch_and_u64((volatile void *)dest, val); return atomic_fetch_and_u64((volatile uint64_t *)(uintptr_t)dest, val);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return atomic_fetch_and_u32((volatile void *)dest, val); return atomic_fetch_and_u32((volatile uint32_t *)(uintptr_t)dest, val);
} }
return atomic_fetch_and_u16((volatile void *)dest, val); return atomic_fetch_and_u16((volatile uint16_t *)(uintptr_t)dest, val);
} }
/** @} */ /** @} */
@ -935,14 +935,14 @@ static inline unsigned semi_atomic_fetch_add_unsigned(volatile unsigned *dest,
unsigned summand) unsigned summand)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return semi_atomic_fetch_add_u64((volatile void *)dest, summand); return semi_atomic_fetch_add_u64((volatile uint64_t *)(uintptr_t)dest, summand);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return semi_atomic_fetch_add_u32((volatile void *)dest, summand); return semi_atomic_fetch_add_u32((volatile uint32_t *)(uintptr_t)dest, summand);
} }
return semi_atomic_fetch_add_u16((volatile void *)dest, summand); return semi_atomic_fetch_add_u16((volatile uint16_t *)(uintptr_t)dest, summand);
} }
/** @} */ /** @} */
@ -1001,14 +1001,14 @@ static inline unsigned semi_atomic_fetch_sub_unsigned(volatile unsigned *dest,
unsigned subtrahend) unsigned subtrahend)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return semi_atomic_fetch_sub_u64((volatile void *)dest, subtrahend); return semi_atomic_fetch_sub_u64((volatile uint64_t *)(uintptr_t)dest, subtrahend);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return semi_atomic_fetch_sub_u32((volatile void *)dest, subtrahend); return semi_atomic_fetch_sub_u32((volatile uint32_t *)(uintptr_t)dest, subtrahend);
} }
return semi_atomic_fetch_sub_u16((volatile void *)dest, subtrahend); return semi_atomic_fetch_sub_u16((volatile uint16_t *)(uintptr_t)dest, subtrahend);
} }
/** @} */ /** @} */
@ -1066,14 +1066,14 @@ static inline unsigned semi_atomic_fetch_or_unsigned(volatile unsigned *dest,
unsigned val) unsigned val)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return semi_atomic_fetch_or_u64((volatile void *)dest, val); return semi_atomic_fetch_or_u64((volatile uint64_t *)(uintptr_t)dest, val);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return semi_atomic_fetch_or_u32((volatile void *)dest, val); return semi_atomic_fetch_or_u32((volatile uint32_t *)(uintptr_t)dest, val);
} }
return semi_atomic_fetch_or_u16((volatile void *)dest, val); return semi_atomic_fetch_or_u16((volatile uint16_t *)(uintptr_t)dest, val);
} }
/** @} */ /** @} */
@ -1132,14 +1132,14 @@ static inline unsigned semi_atomic_fetch_xor_unsigned(volatile unsigned *dest,
unsigned val) unsigned val)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return semi_atomic_fetch_xor_u64((volatile void *)dest, val); return semi_atomic_fetch_xor_u64((volatile uint64_t *)(uintptr_t)dest, val);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return semi_atomic_fetch_xor_u32((volatile void *)dest, val); return semi_atomic_fetch_xor_u32((volatile uint32_t *)(uintptr_t)dest, val);
} }
return semi_atomic_fetch_xor_u16((volatile void *)dest, val); return semi_atomic_fetch_xor_u16((volatile uint16_t *)(uintptr_t)dest, val);
} }
/** @} */ /** @} */
@ -1198,14 +1198,14 @@ static inline unsigned semi_atomic_fetch_and_unsigned(volatile unsigned *dest,
unsigned val) unsigned val)
{ {
if (sizeof(unsigned) == sizeof(uint64_t)) { if (sizeof(unsigned) == sizeof(uint64_t)) {
return semi_atomic_fetch_and_u64((volatile void *)dest, val); return semi_atomic_fetch_and_u64((volatile uint64_t *)(uintptr_t)dest, val);
} }
if (sizeof(unsigned) == sizeof(uint32_t)) { if (sizeof(unsigned) == sizeof(uint32_t)) {
return semi_atomic_fetch_and_u32((volatile void *)dest, val); return semi_atomic_fetch_and_u32((volatile uint32_t *)(uintptr_t)dest, val);
} }
return semi_atomic_fetch_and_u16((volatile void *)dest, val); return semi_atomic_fetch_and_u16((volatile uint16_t *)(uintptr_t)dest, val);
} }
/** @} */ /** @} */