yann@1625
|
1 |
sniped from suse
|
yann@1625
|
2 |
|
yann@1625
|
3 |
Index: sysdeps/powerpc/bits/atomic.h
|
yann@1625
|
4 |
===================================================================
|
yann@1625
|
5 |
RCS file: /cvs/glibc/libc/sysdeps/powerpc/bits/atomic.h,v
|
yann@1625
|
6 |
retrieving revision 1.17
|
yann@1625
|
7 |
diff -u -a -p -r1.17 atomic.h
|
yann@1625
|
8 |
|
yann@1625
|
9 |
diff -durN glibc-2.10.1.orig/sysdeps/powerpc/bits/atomic.h glibc-2.10.1/sysdeps/powerpc/bits/atomic.h
|
yann@1625
|
10 |
--- glibc-2.10.1.orig/sysdeps/powerpc/bits/atomic.h 2007-03-26 22:15:28.000000000 +0200
|
yann@1625
|
11 |
+++ glibc-2.10.1/sysdeps/powerpc/bits/atomic.h 2009-11-13 00:51:19.000000000 +0100
|
yann@1625
|
12 |
@@ -85,14 +85,14 @@
|
yann@1625
|
13 |
__typeof (*(mem)) __tmp; \
|
yann@1625
|
14 |
__typeof (mem) __memp = (mem); \
|
yann@1625
|
15 |
__asm __volatile ( \
|
yann@1625
|
16 |
- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
17 |
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
18 |
" cmpw %0,%2\n" \
|
yann@1625
|
19 |
" bne 2f\n" \
|
yann@1625
|
20 |
- " stwcx. %3,0,%1\n" \
|
yann@1625
|
21 |
+ " stwcx. %3,%y1\n" \
|
yann@1625
|
22 |
" bne- 1b\n" \
|
yann@1625
|
23 |
"2: " __ARCH_ACQ_INSTR \
|
yann@1625
|
24 |
- : "=&r" (__tmp) \
|
yann@1625
|
25 |
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
yann@1625
|
26 |
+ : "=&r" (__tmp), "+Z" (*__memp) \
|
yann@1625
|
27 |
+ : "r" (oldval), "r" (newval) \
|
yann@1625
|
28 |
: "cr0", "memory"); \
|
yann@1625
|
29 |
__tmp; \
|
yann@1625
|
30 |
})
|
yann@1625
|
31 |
@@ -102,14 +102,14 @@
|
yann@1625
|
32 |
__typeof (*(mem)) __tmp; \
|
yann@1625
|
33 |
__typeof (mem) __memp = (mem); \
|
yann@1625
|
34 |
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
yann@1625
|
35 |
- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
|
yann@1625
|
36 |
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
|
yann@1625
|
37 |
" cmpw %0,%2\n" \
|
yann@1625
|
38 |
" bne 2f\n" \
|
yann@1625
|
39 |
- " stwcx. %3,0,%1\n" \
|
yann@1625
|
40 |
+ " stwcx. %3,%y1\n" \
|
yann@1625
|
41 |
" bne- 1b\n" \
|
yann@1625
|
42 |
"2: " \
|
yann@1625
|
43 |
- : "=&r" (__tmp) \
|
yann@1625
|
44 |
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
yann@1625
|
45 |
+ : "=&r" (__tmp), "+Z" (__memp) \
|
yann@1625
|
46 |
+ : "r" (oldval), "r" (newval) \
|
yann@1625
|
47 |
: "cr0", "memory"); \
|
yann@1625
|
48 |
__tmp; \
|
yann@1625
|
49 |
})
|
yann@1625
|
50 |
@@ -118,12 +118,12 @@
|
yann@1625
|
51 |
({ \
|
yann@1625
|
52 |
__typeof (*mem) __val; \
|
yann@1625
|
53 |
__asm __volatile ( \
|
yann@1625
|
54 |
- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
55 |
- " stwcx. %3,0,%2\n" \
|
yann@1625
|
56 |
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
57 |
+ " stwcx. %2,%y1\n" \
|
yann@1625
|
58 |
" bne- 1b\n" \
|
yann@1625
|
59 |
" " __ARCH_ACQ_INSTR \
|
yann@1625
|
60 |
- : "=&r" (__val), "=m" (*mem) \
|
yann@1625
|
61 |
- : "b" (mem), "r" (value), "m" (*mem) \
|
yann@1625
|
62 |
+ : "=&r" (__val), "+Z" (*mem) \
|
yann@1625
|
63 |
+ : "r" (value) \
|
yann@1625
|
64 |
: "cr0", "memory"); \
|
yann@1625
|
65 |
__val; \
|
yann@1625
|
66 |
})
|
yann@1625
|
67 |
@@ -132,11 +132,11 @@
|
yann@1625
|
68 |
({ \
|
yann@1625
|
69 |
__typeof (*mem) __val; \
|
yann@1625
|
70 |
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
yann@1625
|
71 |
- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
yann@1625
|
72 |
- " stwcx. %3,0,%2\n" \
|
yann@1625
|
73 |
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
|
yann@1625
|
74 |
+ " stwcx. %2,%y1\n" \
|
yann@1625
|
75 |
" bne- 1b" \
|
yann@1625
|
76 |
- : "=&r" (__val), "=m" (*mem) \
|
yann@1625
|
77 |
- : "b" (mem), "r" (value), "m" (*mem) \
|
yann@1625
|
78 |
+ : "=&r" (__val), "+Z" (*mem) \
|
yann@1625
|
79 |
+ : "r" (value) \
|
yann@1625
|
80 |
: "cr0", "memory"); \
|
yann@1625
|
81 |
__val; \
|
yann@1625
|
82 |
})
|
yann@1625
|
83 |
@@ -144,12 +144,12 @@
|
yann@1625
|
84 |
#define __arch_atomic_exchange_and_add_32(mem, value) \
|
yann@1625
|
85 |
({ \
|
yann@1625
|
86 |
__typeof (*mem) __val, __tmp; \
|
yann@1625
|
87 |
- __asm __volatile ("1: lwarx %0,0,%3\n" \
|
yann@1625
|
88 |
- " add %1,%0,%4\n" \
|
yann@1625
|
89 |
- " stwcx. %1,0,%3\n" \
|
yann@1625
|
90 |
+ __asm __volatile ("1: lwarx %0,%y2\n" \
|
yann@1625
|
91 |
+ " add %1,%0,%3\n" \
|
yann@1625
|
92 |
+ " stwcx. %1,%y2\n" \
|
yann@1625
|
93 |
" bne- 1b" \
|
yann@1625
|
94 |
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
yann@1625
|
95 |
- : "b" (mem), "r" (value), "m" (*mem) \
|
yann@1625
|
96 |
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
|
yann@1625
|
97 |
+ : "r" (value) \
|
yann@1625
|
98 |
: "cr0", "memory"); \
|
yann@1625
|
99 |
__val; \
|
yann@1625
|
100 |
})
|
yann@1625
|
101 |
@@ -157,12 +157,12 @@
|
yann@1625
|
102 |
#define __arch_atomic_increment_val_32(mem) \
|
yann@1625
|
103 |
({ \
|
yann@1625
|
104 |
__typeof (*(mem)) __val; \
|
yann@1625
|
105 |
- __asm __volatile ("1: lwarx %0,0,%2\n" \
|
yann@1625
|
106 |
+ __asm __volatile ("1: lwarx %0,%y1\n" \
|
yann@1625
|
107 |
" addi %0,%0,1\n" \
|
yann@1625
|
108 |
- " stwcx. %0,0,%2\n" \
|
yann@1625
|
109 |
+ " stwcx. %0,%y1\n" \
|
yann@1625
|
110 |
" bne- 1b" \
|
yann@1625
|
111 |
- : "=&b" (__val), "=m" (*mem) \
|
yann@1625
|
112 |
- : "b" (mem), "m" (*mem) \
|
yann@1625
|
113 |
+ : "=&b" (__val), "+Z" (*mem) \
|
yann@1625
|
114 |
+ : \
|
yann@1625
|
115 |
: "cr0", "memory"); \
|
yann@1625
|
116 |
__val; \
|
yann@1625
|
117 |
})
|
yann@1625
|
118 |
@@ -170,27 +170,27 @@
|
yann@1625
|
119 |
#define __arch_atomic_decrement_val_32(mem) \
|
yann@1625
|
120 |
({ \
|
yann@1625
|
121 |
__typeof (*(mem)) __val; \
|
yann@1625
|
122 |
- __asm __volatile ("1: lwarx %0,0,%2\n" \
|
yann@1625
|
123 |
+ __asm __volatile ("1: lwarx %0,%y1\n" \
|
yann@1625
|
124 |
" subi %0,%0,1\n" \
|
yann@1625
|
125 |
- " stwcx. %0,0,%2\n" \
|
yann@1625
|
126 |
+ " stwcx. %0,%y1\n" \
|
yann@1625
|
127 |
" bne- 1b" \
|
yann@1625
|
128 |
- : "=&b" (__val), "=m" (*mem) \
|
yann@1625
|
129 |
- : "b" (mem), "m" (*mem) \
|
yann@1625
|
130 |
+ : "=&b" (__val), "+Z" (*mem) \
|
yann@1625
|
131 |
+ : \
|
yann@1625
|
132 |
: "cr0", "memory"); \
|
yann@1625
|
133 |
__val; \
|
yann@1625
|
134 |
})
|
yann@1625
|
135 |
|
yann@1625
|
136 |
#define __arch_atomic_decrement_if_positive_32(mem) \
|
yann@1625
|
137 |
({ int __val, __tmp; \
|
yann@1625
|
138 |
- __asm __volatile ("1: lwarx %0,0,%3\n" \
|
yann@1625
|
139 |
+ __asm __volatile ("1: lwarx %0,%y2\n" \
|
yann@1625
|
140 |
" cmpwi 0,%0,0\n" \
|
yann@1625
|
141 |
" addi %1,%0,-1\n" \
|
yann@1625
|
142 |
" ble 2f\n" \
|
yann@1625
|
143 |
- " stwcx. %1,0,%3\n" \
|
yann@1625
|
144 |
+ " stwcx. %1,%y2\n" \
|
yann@1625
|
145 |
" bne- 1b\n" \
|
yann@1625
|
146 |
"2: " __ARCH_ACQ_INSTR \
|
yann@1625
|
147 |
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
yann@1625
|
148 |
- : "b" (mem), "m" (*mem) \
|
yann@1625
|
149 |
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
|
yann@1625
|
150 |
+ : \
|
yann@1625
|
151 |
: "cr0", "memory"); \
|
yann@1625
|
152 |
__val; \
|
yann@1625
|
153 |
})
|
yann@1625
|
154 |
diff -durN glibc-2.10.1.orig/sysdeps/powerpc/powerpc32/bits/atomic.h glibc-2.10.1/sysdeps/powerpc/powerpc32/bits/atomic.h
|
yann@1625
|
155 |
--- glibc-2.10.1.orig/sysdeps/powerpc/powerpc32/bits/atomic.h 2007-03-26 22:15:45.000000000 +0200
|
yann@1625
|
156 |
+++ glibc-2.10.1/sysdeps/powerpc/powerpc32/bits/atomic.h 2009-11-13 00:51:19.000000000 +0100
|
yann@1625
|
157 |
@@ -44,14 +44,14 @@
|
yann@1625
|
158 |
({ \
|
yann@1625
|
159 |
unsigned int __tmp; \
|
yann@1625
|
160 |
__asm __volatile ( \
|
yann@1625
|
161 |
- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
162 |
+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
163 |
" subf. %0,%2,%0\n" \
|
yann@1625
|
164 |
" bne 2f\n" \
|
yann@1625
|
165 |
- " stwcx. %3,0,%1\n" \
|
yann@1625
|
166 |
+ " stwcx. %3,%y1\n" \
|
yann@1625
|
167 |
" bne- 1b\n" \
|
yann@1625
|
168 |
"2: " __ARCH_ACQ_INSTR \
|
yann@1625
|
169 |
- : "=&r" (__tmp) \
|
yann@1625
|
170 |
- : "b" (mem), "r" (oldval), "r" (newval) \
|
yann@1625
|
171 |
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
yann@1625
|
172 |
+ : "r" (oldval), "r" (newval) \
|
yann@1625
|
173 |
: "cr0", "memory"); \
|
yann@1625
|
174 |
__tmp != 0; \
|
yann@1625
|
175 |
})
|
yann@1625
|
176 |
@@ -60,14 +60,14 @@
|
yann@1625
|
177 |
({ \
|
yann@1625
|
178 |
unsigned int __tmp; \
|
yann@1625
|
179 |
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
yann@1625
|
180 |
- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
|
yann@1625
|
181 |
+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
|
yann@1625
|
182 |
" subf. %0,%2,%0\n" \
|
yann@1625
|
183 |
" bne 2f\n" \
|
yann@1625
|
184 |
- " stwcx. %3,0,%1\n" \
|
yann@1625
|
185 |
+ " stwcx. %3,%y1\n" \
|
yann@1625
|
186 |
" bne- 1b\n" \
|
yann@1625
|
187 |
"2: " \
|
yann@1625
|
188 |
- : "=&r" (__tmp) \
|
yann@1625
|
189 |
- : "b" (mem), "r" (oldval), "r" (newval) \
|
yann@1625
|
190 |
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
yann@1625
|
191 |
+ : "r" (oldval), "r" (newval) \
|
yann@1625
|
192 |
: "cr0", "memory"); \
|
yann@1625
|
193 |
__tmp != 0; \
|
yann@1625
|
194 |
})
|
yann@1625
|
195 |
diff -durN glibc-2.10.1.orig/sysdeps/powerpc/powerpc64/bits/atomic.h glibc-2.10.1/sysdeps/powerpc/powerpc64/bits/atomic.h
|
yann@1625
|
196 |
--- glibc-2.10.1.orig/sysdeps/powerpc/powerpc64/bits/atomic.h 2007-03-26 22:16:03.000000000 +0200
|
yann@1625
|
197 |
+++ glibc-2.10.1/sysdeps/powerpc/powerpc64/bits/atomic.h 2009-11-13 00:51:19.000000000 +0100
|
yann@1625
|
198 |
@@ -44,14 +44,14 @@
|
yann@1625
|
199 |
({ \
|
yann@1625
|
200 |
unsigned int __tmp, __tmp2; \
|
yann@1625
|
201 |
__asm __volatile (" clrldi %1,%1,32\n" \
|
yann@1625
|
202 |
- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
203 |
+ "1: lwarx %0,%y2" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
204 |
" subf. %0,%1,%0\n" \
|
yann@1625
|
205 |
" bne 2f\n" \
|
yann@1625
|
206 |
- " stwcx. %4,0,%2\n" \
|
yann@1625
|
207 |
+ " stwcx. %4,%y2\n" \
|
yann@1625
|
208 |
" bne- 1b\n" \
|
yann@1625
|
209 |
"2: " __ARCH_ACQ_INSTR \
|
yann@1625
|
210 |
- : "=&r" (__tmp), "=r" (__tmp2) \
|
yann@1625
|
211 |
- : "b" (mem), "1" (oldval), "r" (newval) \
|
yann@1625
|
212 |
+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
|
yann@1625
|
213 |
+ : "1" (oldval), "r" (newval) \
|
yann@1625
|
214 |
: "cr0", "memory"); \
|
yann@1625
|
215 |
__tmp != 0; \
|
yann@1625
|
216 |
})
|
yann@1625
|
217 |
@@ -61,14 +61,14 @@
|
yann@1625
|
218 |
unsigned int __tmp, __tmp2; \
|
yann@1625
|
219 |
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
yann@1625
|
220 |
" clrldi %1,%1,32\n" \
|
yann@1625
|
221 |
- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
yann@1625
|
222 |
+ "1: lwarx %0,%y2" MUTEX_HINT_REL "\n" \
|
yann@1625
|
223 |
" subf. %0,%1,%0\n" \
|
yann@1625
|
224 |
" bne 2f\n" \
|
yann@1625
|
225 |
- " stwcx. %4,0,%2\n" \
|
yann@1625
|
226 |
+ " stwcx. %4,%y2\n" \
|
yann@1625
|
227 |
" bne- 1b\n" \
|
yann@1625
|
228 |
"2: " \
|
yann@1625
|
229 |
- : "=&r" (__tmp), "=r" (__tmp2) \
|
yann@1625
|
230 |
- : "b" (mem), "1" (oldval), "r" (newval) \
|
yann@1625
|
231 |
+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
|
yann@1625
|
232 |
+ : "1" (oldval), "r" (newval) \
|
yann@1625
|
233 |
: "cr0", "memory"); \
|
yann@1625
|
234 |
__tmp != 0; \
|
yann@1625
|
235 |
})
|
yann@1625
|
236 |
@@ -82,14 +82,14 @@
|
yann@1625
|
237 |
({ \
|
yann@1625
|
238 |
unsigned long __tmp; \
|
yann@1625
|
239 |
__asm __volatile ( \
|
yann@1625
|
240 |
- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
241 |
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
242 |
" subf. %0,%2,%0\n" \
|
yann@1625
|
243 |
" bne 2f\n" \
|
yann@1625
|
244 |
- " stdcx. %3,0,%1\n" \
|
yann@1625
|
245 |
+ " stdcx. %3,%y1\n" \
|
yann@1625
|
246 |
" bne- 1b\n" \
|
yann@1625
|
247 |
"2: " __ARCH_ACQ_INSTR \
|
yann@1625
|
248 |
- : "=&r" (__tmp) \
|
yann@1625
|
249 |
- : "b" (mem), "r" (oldval), "r" (newval) \
|
yann@1625
|
250 |
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
yann@1625
|
251 |
+ : "r" (oldval), "r" (newval) \
|
yann@1625
|
252 |
: "cr0", "memory"); \
|
yann@1625
|
253 |
__tmp != 0; \
|
yann@1625
|
254 |
})
|
yann@1625
|
255 |
@@ -98,14 +98,14 @@
|
yann@1625
|
256 |
({ \
|
yann@1625
|
257 |
unsigned long __tmp; \
|
yann@1625
|
258 |
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
yann@1625
|
259 |
- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
yann@1625
|
260 |
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
|
yann@1625
|
261 |
" subf. %0,%2,%0\n" \
|
yann@1625
|
262 |
" bne 2f\n" \
|
yann@1625
|
263 |
- " stdcx. %3,0,%1\n" \
|
yann@1625
|
264 |
+ " stdcx. %3,%y1\n" \
|
yann@1625
|
265 |
" bne- 1b\n" \
|
yann@1625
|
266 |
"2: " \
|
yann@1625
|
267 |
- : "=&r" (__tmp) \
|
yann@1625
|
268 |
- : "b" (mem), "r" (oldval), "r" (newval) \
|
yann@1625
|
269 |
+ : "=&r" (__tmp), "+Z" (*(mem)) \
|
yann@1625
|
270 |
+ : "r" (oldval), "r" (newval) \
|
yann@1625
|
271 |
: "cr0", "memory"); \
|
yann@1625
|
272 |
__tmp != 0; \
|
yann@1625
|
273 |
})
|
yann@1625
|
274 |
@@ -115,14 +115,14 @@
|
yann@1625
|
275 |
__typeof (*(mem)) __tmp; \
|
yann@1625
|
276 |
__typeof (mem) __memp = (mem); \
|
yann@1625
|
277 |
__asm __volatile ( \
|
yann@1625
|
278 |
- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
279 |
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
280 |
" cmpd %0,%2\n" \
|
yann@1625
|
281 |
" bne 2f\n" \
|
yann@1625
|
282 |
- " stdcx. %3,0,%1\n" \
|
yann@1625
|
283 |
+ " stdcx. %3,%y1\n" \
|
yann@1625
|
284 |
" bne- 1b\n" \
|
yann@1625
|
285 |
"2: " __ARCH_ACQ_INSTR \
|
yann@1625
|
286 |
- : "=&r" (__tmp) \
|
yann@1625
|
287 |
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
yann@1625
|
288 |
+ : "=&r" (__tmp), "+Z" (*__memp) \
|
yann@1625
|
289 |
+ : "r" (oldval), "r" (newval) \
|
yann@1625
|
290 |
: "cr0", "memory"); \
|
yann@1625
|
291 |
__tmp; \
|
yann@1625
|
292 |
})
|
yann@1625
|
293 |
@@ -132,14 +132,14 @@
|
yann@1625
|
294 |
__typeof (*(mem)) __tmp; \
|
yann@1625
|
295 |
__typeof (mem) __memp = (mem); \
|
yann@1625
|
296 |
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
yann@1625
|
297 |
- "1: ldarx %0,0,%1" MUTEX_HINT_REL "\n" \
|
yann@1625
|
298 |
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
|
yann@1625
|
299 |
" cmpd %0,%2\n" \
|
yann@1625
|
300 |
" bne 2f\n" \
|
yann@1625
|
301 |
- " stdcx. %3,0,%1\n" \
|
yann@1625
|
302 |
+ " stdcx. %3,%y1\n" \
|
yann@1625
|
303 |
" bne- 1b\n" \
|
yann@1625
|
304 |
"2: " \
|
yann@1625
|
305 |
- : "=&r" (__tmp) \
|
yann@1625
|
306 |
- : "b" (__memp), "r" (oldval), "r" (newval) \
|
yann@1625
|
307 |
+ : "=&r" (__tmp), "+Z" (*__memp) \
|
yann@1625
|
308 |
+ : "r" (oldval), "r" (newval) \
|
yann@1625
|
309 |
: "cr0", "memory"); \
|
yann@1625
|
310 |
__tmp; \
|
yann@1625
|
311 |
})
|
yann@1625
|
312 |
@@ -148,12 +148,12 @@
|
yann@1625
|
313 |
({ \
|
yann@1625
|
314 |
__typeof (*mem) __val; \
|
yann@1625
|
315 |
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
yann@1625
|
316 |
- "1: ldarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
317 |
- " stdcx. %3,0,%2\n" \
|
yann@1625
|
318 |
+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
|
yann@1625
|
319 |
+ " stdcx. %2,%y1\n" \
|
yann@1625
|
320 |
" bne- 1b\n" \
|
yann@1625
|
321 |
" " __ARCH_ACQ_INSTR \
|
yann@1625
|
322 |
- : "=&r" (__val), "=m" (*mem) \
|
yann@1625
|
323 |
- : "b" (mem), "r" (value), "m" (*mem) \
|
yann@1625
|
324 |
+ : "=&r" (__val), "+Z" (*(mem)) \
|
yann@1625
|
325 |
+ : "r" (value) \
|
yann@1625
|
326 |
: "cr0", "memory"); \
|
yann@1625
|
327 |
__val; \
|
yann@1625
|
328 |
})
|
yann@1625
|
329 |
@@ -162,11 +162,11 @@
|
yann@1625
|
330 |
({ \
|
yann@1625
|
331 |
__typeof (*mem) __val; \
|
yann@1625
|
332 |
__asm __volatile (__ARCH_REL_INSTR "\n" \
|
yann@1625
|
333 |
- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
|
yann@1625
|
334 |
- " stdcx. %3,0,%2\n" \
|
yann@1625
|
335 |
+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
|
yann@1625
|
336 |
+ " stdcx. %2,%y1\n" \
|
yann@1625
|
337 |
" bne- 1b" \
|
yann@1625
|
338 |
- : "=&r" (__val), "=m" (*mem) \
|
yann@1625
|
339 |
- : "b" (mem), "r" (value), "m" (*mem) \
|
yann@1625
|
340 |
+ : "=&r" (__val), "+Z" (*(mem)) \
|
yann@1625
|
341 |
+ : "r" (value) \
|
yann@1625
|
342 |
: "cr0", "memory"); \
|
yann@1625
|
343 |
__val; \
|
yann@1625
|
344 |
})
|
yann@1625
|
345 |
@@ -174,12 +174,12 @@
|
yann@1625
|
346 |
#define __arch_atomic_exchange_and_add_64(mem, value) \
|
yann@1625
|
347 |
({ \
|
yann@1625
|
348 |
__typeof (*mem) __val, __tmp; \
|
yann@1625
|
349 |
- __asm __volatile ("1: ldarx %0,0,%3\n" \
|
yann@1625
|
350 |
- " add %1,%0,%4\n" \
|
yann@1625
|
351 |
- " stdcx. %1,0,%3\n" \
|
yann@1625
|
352 |
+ __asm __volatile ("1: ldarx %0,%y2\n" \
|
yann@1625
|
353 |
+ " add %1,%0,%3\n" \
|
yann@1625
|
354 |
+ " stdcx. %1,%y2\n" \
|
yann@1625
|
355 |
" bne- 1b" \
|
yann@1625
|
356 |
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
yann@1625
|
357 |
- : "b" (mem), "r" (value), "m" (*mem) \
|
yann@1625
|
358 |
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
|
yann@1625
|
359 |
+ : "r" (value) \
|
yann@1625
|
360 |
: "cr0", "memory"); \
|
yann@1625
|
361 |
__val; \
|
yann@1625
|
362 |
})
|
yann@1625
|
363 |
@@ -187,12 +187,12 @@
|
yann@1625
|
364 |
#define __arch_atomic_increment_val_64(mem) \
|
yann@1625
|
365 |
({ \
|
yann@1625
|
366 |
__typeof (*(mem)) __val; \
|
yann@1625
|
367 |
- __asm __volatile ("1: ldarx %0,0,%2\n" \
|
yann@1625
|
368 |
+ __asm __volatile ("1: ldarx %0,%y1\n" \
|
yann@1625
|
369 |
" addi %0,%0,1\n" \
|
yann@1625
|
370 |
- " stdcx. %0,0,%2\n" \
|
yann@1625
|
371 |
+ " stdcx. %0,%y1\n" \
|
yann@1625
|
372 |
" bne- 1b" \
|
yann@1625
|
373 |
- : "=&b" (__val), "=m" (*mem) \
|
yann@1625
|
374 |
- : "b" (mem), "m" (*mem) \
|
yann@1625
|
375 |
+ : "=&b" (__val), "+Z" (*(mem)) \
|
yann@1625
|
376 |
+ : \
|
yann@1625
|
377 |
: "cr0", "memory"); \
|
yann@1625
|
378 |
__val; \
|
yann@1625
|
379 |
})
|
yann@1625
|
380 |
@@ -200,27 +200,27 @@
|
yann@1625
|
381 |
#define __arch_atomic_decrement_val_64(mem) \
|
yann@1625
|
382 |
({ \
|
yann@1625
|
383 |
__typeof (*(mem)) __val; \
|
yann@1625
|
384 |
- __asm __volatile ("1: ldarx %0,0,%2\n" \
|
yann@1625
|
385 |
+ __asm __volatile ("1: ldarx %0,%y1\n" \
|
yann@1625
|
386 |
" subi %0,%0,1\n" \
|
yann@1625
|
387 |
- " stdcx. %0,0,%2\n" \
|
yann@1625
|
388 |
+ " stdcx. %0,%y1\n" \
|
yann@1625
|
389 |
" bne- 1b" \
|
yann@1625
|
390 |
- : "=&b" (__val), "=m" (*mem) \
|
yann@1625
|
391 |
- : "b" (mem), "m" (*mem) \
|
yann@1625
|
392 |
+ : "=&b" (__val), "+Z" (*(mem)) \
|
yann@1625
|
393 |
+ : \
|
yann@1625
|
394 |
: "cr0", "memory"); \
|
yann@1625
|
395 |
__val; \
|
yann@1625
|
396 |
})
|
yann@1625
|
397 |
|
yann@1625
|
398 |
#define __arch_atomic_decrement_if_positive_64(mem) \
|
yann@1625
|
399 |
({ int __val, __tmp; \
|
yann@1625
|
400 |
- __asm __volatile ("1: ldarx %0,0,%3\n" \
|
yann@1625
|
401 |
+ __asm __volatile ("1: ldarx %0,%y2\n" \
|
yann@1625
|
402 |
" cmpdi 0,%0,0\n" \
|
yann@1625
|
403 |
" addi %1,%0,-1\n" \
|
yann@1625
|
404 |
" ble 2f\n" \
|
yann@1625
|
405 |
- " stdcx. %1,0,%3\n" \
|
yann@1625
|
406 |
+ " stdcx. %1,%y2\n" \
|
yann@1625
|
407 |
" bne- 1b\n" \
|
yann@1625
|
408 |
"2: " __ARCH_ACQ_INSTR \
|
yann@1625
|
409 |
- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
|
yann@1625
|
410 |
- : "b" (mem), "m" (*mem) \
|
yann@1625
|
411 |
+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
|
yann@1625
|
412 |
+ : \
|
yann@1625
|
413 |
: "cr0", "memory"); \
|
yann@1625
|
414 |
__val; \
|
yann@1625
|
415 |
})
|