@@ -73,33 +73,34 @@ void utils_atomic_load_acquire(void *ptr, void *dest) {
7373 * (long long * )dest = InterlockedOr64Acquire ((long long volatile * )ptr , 0 );
7474}
7575
76- void utils_atomic_store_release (void * ptr , long long desired ) {
76+ void utils_atomic_store_release (void * ptr , void * desired ) {
7777 ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
78- InterlockedExchange64 ((long long volatile * )ptr , desired );
78+ InterlockedExchange64 ((long long volatile * )ptr , ( long long ) desired );
7979}
8080
81- void utils_atomic_increment (void * ptr ) {
81+ long long utils_atomic_increment (void * ptr ) {
8282 ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
83- InterlockedIncrement64 ((long long volatile * )ptr )
83+ return InterlockedIncrement64 ((long long volatile * )ptr );
8484}
8585
86- void utils_atomic_decrement (void * ptr ) {
86+ long long utils_atomic_decrement (void * ptr ) {
8787 ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
88- InterlockedDecrement64 ((long long volatile * )ptr )
88+ return InterlockedDecrement64 ((long long volatile * )ptr );
8989}
9090
91- void utils_fetch_and_add64 (void * ptr , long long value ) {
91+ long long utils_fetch_and_add64 (void * ptr , long long value ) {
9292 ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
93- InterlockedExchangeAdd64 ((long long volatile * )(ptr ), value );
93+ // returns the val of *ptr before the operation
94+ return InterlockedExchangeAdd64 ((long long volatile * )(ptr ), value );
9495}
9596
9697// NOTE: windows version have different order of args
9798void utils_compare_exchange (void * ptr , void * desired , void * expected ) {
9899 ASSERT_IS_ALIGNED ((uintptr_t )ptr , 64 );
99100 ASSERT_IS_ALIGNED ((uintptr_t )desired , 64 );
100101 ASSERT_IS_ALIGNED ((uintptr_t )expected , 64 );
101- InterlockedCompareExchange64 ((long long volatile * )ptr , * expected ,
102- * desired );
102+ InterlockedCompareExchange64 ((long long volatile * )ptr ,
103+ * ( long long * ) expected , * ( long long * ) desired );
103104}
104105
105106static BOOL CALLBACK initOnceCb (PINIT_ONCE InitOnce , PVOID Parameter ,
0 commit comments