]> code.ossystems Code Review - openembedded-core.git/blob
5ad0bbd1591702b3364c03bd28719f6395add145
[openembedded-core.git] /
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
5
6 This was unearthed by clang compiler where it complained about parameter
7 mismatch, gcc doesnt notice this
8
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);
12
13 Fixed all instances thusly
14
15 Signed-off-by: Khem Raj <raj.khem@gmail.com>
16 ---
17 Upstream-Status: Submitted
18
19  urcu/uatomic/generic.h | 40 ++++++++++++++++++++--------------------
20  1 file changed, 20 insertions(+), 20 deletions(-)
21
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,
27         switch (len) {
28  #ifdef UATOMIC_HAS_ATOMIC_BYTE
29         case 1:
30 -               return __sync_val_compare_and_swap_1(addr, old, _new);
31 +               return __sync_val_compare_and_swap_1((unsigned char *)addr, old, _new);
32  #endif
33  #ifdef UATOMIC_HAS_ATOMIC_SHORT
34         case 2:
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);
37  #endif
38         case 4:
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)
42         case 8:
43 -               return __sync_val_compare_and_swap_8(addr, old, _new);
44 +               return __sync_val_compare_and_swap_8((unsigned long *)addr, old, _new);
45  #endif
46         }
47         _uatomic_link_error();
48 @@ -100,20 +100,20 @@ void _uatomic_and(void *addr, unsigned long val,
49         switch (len) {
50  #ifdef UATOMIC_HAS_ATOMIC_BYTE
51         case 1:
52 -               __sync_and_and_fetch_1(addr, val);
53 +               __sync_and_and_fetch_1((unsigned char *)addr, val);
54                 return;
55  #endif
56  #ifdef UATOMIC_HAS_ATOMIC_SHORT
57         case 2:
58 -               __sync_and_and_fetch_2(addr, val);
59 +               __sync_and_and_fetch_2((unsigned short int *)addr, val);
60                 return;
61  #endif
62         case 4:
63 -               __sync_and_and_fetch_4(addr, val);
64 +               __sync_and_and_fetch_4((unsigned int *)addr, val);
65                 return;
66  #if (CAA_BITS_PER_LONG == 64)
67         case 8:
68 -               __sync_and_and_fetch_8(addr, val);
69 +               __sync_and_and_fetch_8((unsigned long *)addr, val);
70                 return;
71  #endif
72         }
73 @@ -139,20 +139,20 @@ void _uatomic_or(void *addr, unsigned long val,
74         switch (len) {
75  #ifdef UATOMIC_HAS_ATOMIC_BYTE
76         case 1:
77 -               __sync_or_and_fetch_1(addr, val);
78 +               __sync_or_and_fetch_1((unsigned char *)addr, val);
79                 return;
80  #endif
81  #ifdef UATOMIC_HAS_ATOMIC_SHORT
82         case 2:
83 -               __sync_or_and_fetch_2(addr, val);
84 +               __sync_or_and_fetch_2((unsigned short int *)addr, val);
85                 return;
86  #endif
87         case 4:
88 -               __sync_or_and_fetch_4(addr, val);
89 +               __sync_or_and_fetch_4((unsigned int *)addr, val);
90                 return;
91  #if (CAA_BITS_PER_LONG == 64)
92         case 8:
93 -               __sync_or_and_fetch_8(addr, val);
94 +               __sync_or_and_fetch_8((unsigned long *)addr, val);
95                 return;
96  #endif
97         }
98 @@ -180,17 +180,17 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val,
99         switch (len) {
100  #ifdef UATOMIC_HAS_ATOMIC_BYTE
101         case 1:
102 -               return __sync_add_and_fetch_1(addr, val);
103 +               return __sync_add_and_fetch_1((unsigned char *)addr, val);
104  #endif
105  #ifdef UATOMIC_HAS_ATOMIC_SHORT
106         case 2:
107 -               return __sync_add_and_fetch_2(addr, val);
108 +               return __sync_add_and_fetch_2((unsigned short int *)addr, val);
109  #endif
110         case 4:
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)
114         case 8:
115 -               return __sync_add_and_fetch_8(addr, val);
116 +               return __sync_add_and_fetch_8((unsigned long *)addr, val);
117  #endif
118         }
119         _uatomic_link_error();
120 @@ -218,7 +218,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
121  
122                 do {
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));
126  
127                 return old;
128         }
129 @@ -230,7 +230,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
130  
131                 do {
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));
135  
136                 return old;
137         }
138 @@ -241,7 +241,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
139  
140                 do {
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));
144  
145                 return old;
146         }
147 @@ -252,7 +252,7 @@ unsigned long _uatomic_exchange(void *addr, unsigned long val, int len)
148  
149                 do {
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));
153  
154                 return old;
155         }
156 -- 
157 2.1.4
158