1 From 6af790818d074c103c4797f1ce764896f183e028 Mon Sep 17 00:00:00 2001
2 From: Khem Raj <raj.khem@gmail.com>
3 Date: Sat, 22 Aug 2015 21:35:03 -0700
4 Subject: [PATCH] uatomic: Specify complete types for atomic function calls
6 This was unearthed by clang compiler where it complained about parameter
7 mismatch, gcc doesnt notice this
9 urcu/uatomic/generic.h:190:10: error: address argument to atomic builtin
10 must be a pointer to integer or pointer ('void *' invalid)
11 return __sync_add_and_fetch_4(addr, val);
13 Fixed all instances thusly
15 Signed-off-by: Khem Raj <raj.khem@gmail.com>
17 Upstream-Status: Submitted
19 urcu/uatomic/generic.h | 40 ++++++++++++++++++++--------------------
20 1 file changed, 20 insertions(+), 20 deletions(-)
22 diff --git a/urcu/uatomic/generic.h b/urcu/uatomic/generic.h
23 index 37f59cc..0046ffd 100644
24 --- a/urcu/uatomic/generic.h
25 +++ b/urcu/uatomic/generic.h
26 @@ -65,17 +65,17 @@ unsigned long _uatomic_cmpxchg(void *addr, unsigned long old,
28 #ifdef UATOMIC_HAS_ATOMIC_BYTE
30 - return __sync_val_compare_and_swap_1(addr, old, _new);
31 + return __sync_val_compare_and_swap_1((unsigned char *)addr, old, _new);
33 #ifdef UATOMIC_HAS_ATOMIC_SHORT
35 - return __sync_val_compare_and_swap_2(addr, old, _new);
36 + return __sync_val_compare_and_swap_2((unsigned short int *)addr, old, _new);
39 - return __sync_val_compare_and_swap_4(addr, old, _new);
40 + return __sync_val_compare_and_swap_4((unsigned int *)addr, old, _new);
41 #if (CAA_BITS_PER_LONG == 64)
43 - return __sync_val_compare_and_swap_8(addr, old, _new);
44 + return __sync_val_compare_and_swap_8((unsigned long *)addr, old, _new);
47 _uatomic_link_error();
48 @@ -100,20 +100,20 @@ void _uatomic_and(void *addr, unsigned long val,
50 #ifdef UATOMIC_HAS_ATOMIC_BYTE
52 - __sync_and_and_fetch_1(addr, val);
53 + __sync_and_and_fetch_1((unsigned char *)addr, val);
56 #ifdef UATOMIC_HAS_ATOMIC_SHORT
58 - __sync_and_and_fetch_2(addr, val);
59 + __sync_and_and_fetch_2((unsigned short int *)addr, val);
63 - __sync_and_and_fetch_4(addr, val);
64 + __sync_and_and_fetch_4((unsigned int *)addr, val);
66 #if (CAA_BITS_PER_LONG == 64)
68 - __sync_and_and_fetch_8(addr, val);
69 + __sync_and_and_fetch_8((unsigned long *)addr, val);
73 @@ -139,20 +139,20 @@ void _uatomic_or(void *addr, unsigned long val,
75 #ifdef UATOMIC_HAS_ATOMIC_BYTE
77 - __sync_or_and_fetch_1(addr, val);
78 + __sync_or_and_fetch_1((unsigned char *)addr, val);
81 #ifdef UATOMIC_HAS_ATOMIC_SHORT
83 - __sync_or_and_fetch_2(addr, val);
84 + __sync_or_and_fetch_2((unsigned short int *)addr, val);
88 - __sync_or_and_fetch_4(addr, val);
89 + __sync_or_and_fetch_4((unsigned int *)addr, val);
91 #if (CAA_BITS_PER_LONG == 64)
93 - __sync_or_and_fetch_8(addr, val);
94 + __sync_or_and_fetch_8((unsigned long *)addr, val);
98 @@ -180,17 +180,17 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val,
100 #ifdef UATOMIC_HAS_ATOMIC_BYTE
102 - return __sync_add_and_fetch_1(addr, val);
103 + return __sync_add_and_fetch_1((unsigned char *)addr, val);
105 #ifdef UATOMIC_HAS_ATOMIC_SHORT
107 - return __sync_add_and_fetch_2(addr, val);
108 + return __sync_add_and_fetch_2((unsigned short int *)addr, val);
111 - return __sync_add_and_fetch_4(addr, val);
112 + return __sync_add_and_fetch_4((unsigned int *)addr, val);
113 #if (CAA_BITS_PER_LONG == 64)
115 - return __sync_add_and_fetch_8(addr, val);
116 + return __sync_add_and_fetch_8((unsigned long *)addr, val);
119 _uatomic_link_error();
120 @@ -218,7 +218,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
123 old = uatomic_read((unsigned char *)addr);
124 - } while (!__sync_bool_compare_and_swap_1(addr, old, val));
125 + } while (!__sync_bool_compare_and_swap_1((unsigned char *)addr, old, val));
129 @@ -230,7 +230,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
132 old = uatomic_read((unsigned short *)addr);
133 - } while (!__sync_bool_compare_and_swap_2(addr, old, val));
134 + } while (!__sync_bool_compare_and_swap_2((unsigned short int *)addr, old, val));
138 @@ -241,7 +241,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
141 old = uatomic_read((unsigned int *)addr);
142 - } while (!__sync_bool_compare_and_swap_4(addr, old, val));
143 + } while (!__sync_bool_compare_and_swap_4((unsigned int *)addr, old, val));
147 @@ -252,7 +252,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
150 old = uatomic_read((unsigned long *)addr);
151 - } while (!__sync_bool_compare_and_swap_8(addr, old, val));
152 + } while (!__sync_bool_compare_and_swap_8((unsigned long *)addr, old, val));