Skip to content

Commit 70013d0

Browse files
committed
Fixed casts around calls to atomic u32 functions
- uint32_t -> void * - void ** -> uint32_t * For whatever reason `uintptr_t` and `uint32_t` expand to incompatible types `unsigned int` and `unsigned long int`. This is implicitely casted when passed by value, but causes a warning in gcc and error in iar when passed by pointer. This issue is not present on x86_32 gcc
1 parent 2c78dca commit 70013d0

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

hal/common/critical.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,9 @@ bool core_util_atomic_cas_u32(uint32_t *ptr, uint32_t *expectedCurrentValue, uin
234234

235235
bool core_util_atomic_cas_ptr(void **ptr, void **expectedCurrentValue, void *desiredValue) {
236236
return core_util_atomic_cas_u32(
237-
(uintptr_t *)ptr,
238-
(uintptr_t *)expectedCurrentValue,
239-
(uintptr_t)desiredValue);
237+
(uint32_t *)ptr,
238+
(uint32_t *)expectedCurrentValue,
239+
(uint32_t)desiredValue);
240240
}
241241

242242
uint8_t core_util_atomic_incr_u8(uint8_t *valuePtr, uint8_t delta)
@@ -270,7 +270,7 @@ uint32_t core_util_atomic_incr_u32(uint32_t *valuePtr, uint32_t delta)
270270
}
271271

272272
void *core_util_atomic_incr_ptr(void **valuePtr, ptrdiff_t delta) {
273-
return core_util_atomic_incr_u32((uintptr_t)valuePtr, (uintptr_t)delta);
273+
return (void *)core_util_atomic_incr_u32((uint32_t *)valuePtr, (uint32_t)delta);
274274
}
275275

276276

@@ -305,7 +305,7 @@ uint32_t core_util_atomic_decr_u32(uint32_t *valuePtr, uint32_t delta)
305305
}
306306

307307
void *core_util_atomic_decr_ptr(void **valuePtr, ptrdiff_t delta) {
308-
return core_util_atomic_decr_u32((uintptr_t)valuePtr, (uintptr_t)delta);
308+
return (void *)core_util_atomic_decr_u32((uint32_t *)valuePtr, (uint32_t)delta);
309309
}
310310

311311

0 commit comments

Comments
 (0)