Index: common/lib/libc/atomic/atomic_cas_16_cas.c =================================================================== RCS file: /cvsroot/src/common/lib/libc/atomic/atomic_cas_16_cas.c,v retrieving revision 1.3 diff -u -p -r1.3 atomic_cas_16_cas.c --- common/lib/libc/atomic/atomic_cas_16_cas.c 21 Feb 2014 16:06:48 -0000 1.3 +++ common/lib/libc/atomic/atomic_cas_16_cas.c 18 May 2022 05:45:47 -0000 @@ -36,12 +36,15 @@ #endif #include -bool bool_compare_and_swap_2(volatile uint16_t *, uint16_t, uint16_t, ...) +bool bool_compare_and_swap_2(volatile int16_t *, int16_t, int16_t, ...) asm("__sync_bool_compare_and_swap_2"); bool -bool_compare_and_swap_2(volatile uint16_t *addr, uint16_t oldval, - uint16_t newval, ...) +bool_compare_and_swap_2(volatile int16_t *addr, int16_t oldval, + int16_t newval, ...) { - return atomic_cas_16(addr, oldval, newval) == oldval; + const uint16_t oldv = (uint16_t)oldval; + const uint16_t newv = (uint16_t)newval; + + return atomic_cas_16((volatile uint16_t *)addr, oldv, newv) == oldv; } Index: common/lib/libc/atomic/atomic_cas_32_cas.c =================================================================== RCS file: /cvsroot/src/common/lib/libc/atomic/atomic_cas_32_cas.c,v retrieving revision 1.1 diff -u -p -r1.1 atomic_cas_32_cas.c --- common/lib/libc/atomic/atomic_cas_32_cas.c 21 Feb 2014 10:52:50 -0000 1.1 +++ common/lib/libc/atomic/atomic_cas_32_cas.c 18 May 2022 05:45:47 -0000 @@ -34,12 +34,15 @@ #endif #include -bool bool_compare_and_swap_4(volatile uint32_t *, uint32_t, uint32_t, ...) +bool bool_compare_and_swap_4(volatile int32_t *, int32_t, int32_t, ...) asm("__sync_bool_compare_and_swap_4"); bool -bool_compare_and_swap_4(volatile uint32_t *addr, uint32_t oldval, - uint32_t newval, ...) +bool_compare_and_swap_4(volatile int32_t *addr, int32_t oldval, + int32_t newval, ...) { - return atomic_cas_32(addr, oldval, newval) == oldval; + const uint32_t oldv = (uint32_t)oldval; + const uint32_t newv = (uint32_t)newval; + + return atomic_cas_32((volatile uint32_t *)addr, oldv, newv) == oldv; } Index: common/lib/libc/atomic/atomic_cas_64_cas.c =================================================================== RCS file: /cvsroot/src/common/lib/libc/atomic/atomic_cas_64_cas.c,v retrieving revision 1.2 diff -u -p -r1.2 atomic_cas_64_cas.c --- common/lib/libc/atomic/atomic_cas_64_cas.c 18 Feb 2014 12:23:07 -0000 1.2 +++ common/lib/libc/atomic/atomic_cas_64_cas.c 18 May 2022 05:45:47 -0000 @@ -36,14 +36,17 @@ #ifdef __HAVE_ATOMIC64_OPS -bool bool_compare_and_swap_8(volatile uint64_t *, uint64_t, uint64_t, ...) +bool bool_compare_and_swap_8(volatile int64_t *, int64_t, int64_t, ...) asm("__sync_bool_compare_and_swap_8"); bool -bool_compare_and_swap_8(volatile uint64_t *addr, uint64_t oldval, - uint64_t newval, ...) +bool_compare_and_swap_8(volatile int64_t *addr, int64_t oldval, + int64_t newval, ...) { - return atomic_cas_64(addr, oldval, newval) == oldval; + const uin64_t oldv = (uint64_t)oldval; + const uin64_t newv = (uint64_t)newval; + + return atomic_cas_64((volatile uint64 *)addr, oldv, newv) == oldv; } #endif Index: common/lib/libc/atomic/atomic_cas_8_cas.c =================================================================== RCS file: /cvsroot/src/common/lib/libc/atomic/atomic_cas_8_cas.c,v retrieving revision 1.3 diff -u -p -r1.3 atomic_cas_8_cas.c --- common/lib/libc/atomic/atomic_cas_8_cas.c 21 Feb 2014 16:06:48 -0000 1.3 +++ common/lib/libc/atomic/atomic_cas_8_cas.c 18 May 2022 05:45:47 -0000 @@ -35,13 +35,17 @@ #include #endif #include +#include -bool bool_compare_and_swap_1(volatile uint8_t *, uint8_t, uint8_t, ...) +bool bool_compare_and_swap_1(volatile int8_t *, int8_t, int8_t, ...) asm("__sync_bool_compare_and_swap_1"); bool -bool_compare_and_swap_1(volatile uint8_t *addr, uint8_t oldval, - uint8_t newval, ...) +bool_compare_and_swap_1(volatile int8_t *addr, int8_t oldval, + int8_t newval, ...) { - return atomic_cas_8(addr, oldval, newval) == oldval; + uint8_t oldv = (uint8_t)oldval; + uint8_t newv = (uint8_t)newval; + + return atomic_cas_8((volatile uint8_t *)addr, oldv, newv) == oldv; }