1.1 --- a/patches/glibc/2_9/500-ppc-glibc-2.9-atomic.patch Sat Apr 11 19:03:02 2009 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,414 +0,0 @@
1.4 -Original patch from: gentoo/src/patchsets/glibc/2.9/6120_all_ppc-glibc-2.9-atomic.patch
1.5 -
1.6 --= BEGIN original header =-
1.7 -sniped from suse
1.8 -
1.9 --= END original header =-
1.10 -
1.11 -diff -durN glibc-2_9.orig/sysdeps/powerpc/bits/atomic.h glibc-2_9/sysdeps/powerpc/bits/atomic.h
1.12 ---- glibc-2_9.orig/sysdeps/powerpc/bits/atomic.h 2007-03-26 22:15:28.000000000 +0200
1.13 -+++ glibc-2_9/sysdeps/powerpc/bits/atomic.h 2009-02-02 22:01:40.000000000 +0100
1.14 -@@ -85,14 +85,14 @@
1.15 - __typeof (*(mem)) __tmp; \
1.16 - __typeof (mem) __memp = (mem); \
1.17 - __asm __volatile ( \
1.18 -- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
1.19 -+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
1.20 - " cmpw %0,%2\n" \
1.21 - " bne 2f\n" \
1.22 -- " stwcx. %3,0,%1\n" \
1.23 -+ " stwcx. %3,%y1\n" \
1.24 - " bne- 1b\n" \
1.25 - "2: " __ARCH_ACQ_INSTR \
1.26 -- : "=&r" (__tmp) \
1.27 -- : "b" (__memp), "r" (oldval), "r" (newval) \
1.28 -+ : "=&r" (__tmp), "+Z" (*__memp) \
1.29 -+ : "r" (oldval), "r" (newval) \
1.30 - : "cr0", "memory"); \
1.31 - __tmp; \
1.32 - })
1.33 -@@ -102,14 +102,14 @@
1.34 - __typeof (*(mem)) __tmp; \
1.35 - __typeof (mem) __memp = (mem); \
1.36 - __asm __volatile (__ARCH_REL_INSTR "\n" \
1.37 -- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
1.38 -+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
1.39 - " cmpw %0,%2\n" \
1.40 - " bne 2f\n" \
1.41 -- " stwcx. %3,0,%1\n" \
1.42 -+ " stwcx. %3,%y1\n" \
1.43 - " bne- 1b\n" \
1.44 - "2: " \
1.45 -- : "=&r" (__tmp) \
1.46 -- : "b" (__memp), "r" (oldval), "r" (newval) \
1.47 -+ : "=&r" (__tmp), "+Z" (__memp) \
1.48 -+ : "r" (oldval), "r" (newval) \
1.49 - : "cr0", "memory"); \
1.50 - __tmp; \
1.51 - })
1.52 -@@ -118,12 +118,12 @@
1.53 - ({ \
1.54 - __typeof (*mem) __val; \
1.55 - __asm __volatile ( \
1.56 -- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
1.57 -- " stwcx. %3,0,%2\n" \
1.58 -+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
1.59 -+ " stwcx. %2,%y1\n" \
1.60 - " bne- 1b\n" \
1.61 - " " __ARCH_ACQ_INSTR \
1.62 -- : "=&r" (__val), "=m" (*mem) \
1.63 -- : "b" (mem), "r" (value), "m" (*mem) \
1.64 -+ : "=&r" (__val), "+Z" (*mem) \
1.65 -+ : "r" (value) \
1.66 - : "cr0", "memory"); \
1.67 - __val; \
1.68 - })
1.69 -@@ -132,11 +132,11 @@
1.70 - ({ \
1.71 - __typeof (*mem) __val; \
1.72 - __asm __volatile (__ARCH_REL_INSTR "\n" \
1.73 -- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
1.74 -- " stwcx. %3,0,%2\n" \
1.75 -+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
1.76 -+ " stwcx. %2,%y1\n" \
1.77 - " bne- 1b" \
1.78 -- : "=&r" (__val), "=m" (*mem) \
1.79 -- : "b" (mem), "r" (value), "m" (*mem) \
1.80 -+ : "=&r" (__val), "+Z" (*mem) \
1.81 -+ : "r" (value) \
1.82 - : "cr0", "memory"); \
1.83 - __val; \
1.84 - })
1.85 -@@ -144,12 +144,12 @@
1.86 - #define __arch_atomic_exchange_and_add_32(mem, value) \
1.87 - ({ \
1.88 - __typeof (*mem) __val, __tmp; \
1.89 -- __asm __volatile ("1: lwarx %0,0,%3\n" \
1.90 -- " add %1,%0,%4\n" \
1.91 -- " stwcx. %1,0,%3\n" \
1.92 -+ __asm __volatile ("1: lwarx %0,%y2\n" \
1.93 -+ " add %1,%0,%3\n" \
1.94 -+ " stwcx. %1,%y2\n" \
1.95 - " bne- 1b" \
1.96 -- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
1.97 -- : "b" (mem), "r" (value), "m" (*mem) \
1.98 -+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
1.99 -+ : "r" (value) \
1.100 - : "cr0", "memory"); \
1.101 - __val; \
1.102 - })
1.103 -@@ -157,12 +157,12 @@
1.104 - #define __arch_atomic_increment_val_32(mem) \
1.105 - ({ \
1.106 - __typeof (*(mem)) __val; \
1.107 -- __asm __volatile ("1: lwarx %0,0,%2\n" \
1.108 -+ __asm __volatile ("1: lwarx %0,%y1\n" \
1.109 - " addi %0,%0,1\n" \
1.110 -- " stwcx. %0,0,%2\n" \
1.111 -+ " stwcx. %0,%y1\n" \
1.112 - " bne- 1b" \
1.113 -- : "=&b" (__val), "=m" (*mem) \
1.114 -- : "b" (mem), "m" (*mem) \
1.115 -+ : "=&b" (__val), "+Z" (*mem) \
1.116 -+ : \
1.117 - : "cr0", "memory"); \
1.118 - __val; \
1.119 - })
1.120 -@@ -170,27 +170,27 @@
1.121 - #define __arch_atomic_decrement_val_32(mem) \
1.122 - ({ \
1.123 - __typeof (*(mem)) __val; \
1.124 -- __asm __volatile ("1: lwarx %0,0,%2\n" \
1.125 -+ __asm __volatile ("1: lwarx %0,%y1\n" \
1.126 - " subi %0,%0,1\n" \
1.127 -- " stwcx. %0,0,%2\n" \
1.128 -+ " stwcx. %0,%y1\n" \
1.129 - " bne- 1b" \
1.130 -- : "=&b" (__val), "=m" (*mem) \
1.131 -- : "b" (mem), "m" (*mem) \
1.132 -+ : "=&b" (__val), "+Z" (*mem) \
1.133 -+ : \
1.134 - : "cr0", "memory"); \
1.135 - __val; \
1.136 - })
1.137 -
1.138 - #define __arch_atomic_decrement_if_positive_32(mem) \
1.139 - ({ int __val, __tmp; \
1.140 -- __asm __volatile ("1: lwarx %0,0,%3\n" \
1.141 -+ __asm __volatile ("1: lwarx %0,%y2\n" \
1.142 - " cmpwi 0,%0,0\n" \
1.143 - " addi %1,%0,-1\n" \
1.144 - " ble 2f\n" \
1.145 -- " stwcx. %1,0,%3\n" \
1.146 -+ " stwcx. %1,%y2\n" \
1.147 - " bne- 1b\n" \
1.148 - "2: " __ARCH_ACQ_INSTR \
1.149 -- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
1.150 -- : "b" (mem), "m" (*mem) \
1.151 -+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
1.152 -+ : \
1.153 - : "cr0", "memory"); \
1.154 - __val; \
1.155 - })
1.156 -diff -durN glibc-2_9.orig/sysdeps/powerpc/powerpc32/bits/atomic.h glibc-2_9/sysdeps/powerpc/powerpc32/bits/atomic.h
1.157 ---- glibc-2_9.orig/sysdeps/powerpc/powerpc32/bits/atomic.h 2007-03-26 22:15:45.000000000 +0200
1.158 -+++ glibc-2_9/sysdeps/powerpc/powerpc32/bits/atomic.h 2009-02-02 22:01:40.000000000 +0100
1.159 -@@ -44,14 +44,14 @@
1.160 - ({ \
1.161 - unsigned int __tmp; \
1.162 - __asm __volatile ( \
1.163 -- "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
1.164 -+ "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
1.165 - " subf. %0,%2,%0\n" \
1.166 - " bne 2f\n" \
1.167 -- " stwcx. %3,0,%1\n" \
1.168 -+ " stwcx. %3,%y1\n" \
1.169 - " bne- 1b\n" \
1.170 - "2: " __ARCH_ACQ_INSTR \
1.171 -- : "=&r" (__tmp) \
1.172 -- : "b" (mem), "r" (oldval), "r" (newval) \
1.173 -+ : "=&r" (__tmp), "+Z" (*(mem)) \
1.174 -+ : "r" (oldval), "r" (newval) \
1.175 - : "cr0", "memory"); \
1.176 - __tmp != 0; \
1.177 - })
1.178 -@@ -60,14 +60,14 @@
1.179 - ({ \
1.180 - unsigned int __tmp; \
1.181 - __asm __volatile (__ARCH_REL_INSTR "\n" \
1.182 -- "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
1.183 -+ "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
1.184 - " subf. %0,%2,%0\n" \
1.185 - " bne 2f\n" \
1.186 -- " stwcx. %3,0,%1\n" \
1.187 -+ " stwcx. %3,%y1\n" \
1.188 - " bne- 1b\n" \
1.189 - "2: " \
1.190 -- : "=&r" (__tmp) \
1.191 -- : "b" (mem), "r" (oldval), "r" (newval) \
1.192 -+ : "=&r" (__tmp), "+Z" (*(mem)) \
1.193 -+ : "r" (oldval), "r" (newval) \
1.194 - : "cr0", "memory"); \
1.195 - __tmp != 0; \
1.196 - })
1.197 -diff -durN glibc-2_9.orig/sysdeps/powerpc/powerpc64/bits/atomic.h glibc-2_9/sysdeps/powerpc/powerpc64/bits/atomic.h
1.198 ---- glibc-2_9.orig/sysdeps/powerpc/powerpc64/bits/atomic.h 2007-03-26 22:16:03.000000000 +0200
1.199 -+++ glibc-2_9/sysdeps/powerpc/powerpc64/bits/atomic.h 2009-02-02 22:01:40.000000000 +0100
1.200 -@@ -44,14 +44,14 @@
1.201 - ({ \
1.202 - unsigned int __tmp, __tmp2; \
1.203 - __asm __volatile (" clrldi %1,%1,32\n" \
1.204 -- "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
1.205 -+ "1: lwarx %0,%y2" MUTEX_HINT_ACQ "\n" \
1.206 - " subf. %0,%1,%0\n" \
1.207 - " bne 2f\n" \
1.208 -- " stwcx. %4,0,%2\n" \
1.209 -+ " stwcx. %4,%y2\n" \
1.210 - " bne- 1b\n" \
1.211 - "2: " __ARCH_ACQ_INSTR \
1.212 -- : "=&r" (__tmp), "=r" (__tmp2) \
1.213 -- : "b" (mem), "1" (oldval), "r" (newval) \
1.214 -+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
1.215 -+ : "1" (oldval), "r" (newval) \
1.216 - : "cr0", "memory"); \
1.217 - __tmp != 0; \
1.218 - })
1.219 -@@ -61,14 +61,14 @@
1.220 - unsigned int __tmp, __tmp2; \
1.221 - __asm __volatile (__ARCH_REL_INSTR "\n" \
1.222 - " clrldi %1,%1,32\n" \
1.223 -- "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
1.224 -+ "1: lwarx %0,%y2" MUTEX_HINT_REL "\n" \
1.225 - " subf. %0,%1,%0\n" \
1.226 - " bne 2f\n" \
1.227 -- " stwcx. %4,0,%2\n" \
1.228 -+ " stwcx. %4,%y2\n" \
1.229 - " bne- 1b\n" \
1.230 - "2: " \
1.231 -- : "=&r" (__tmp), "=r" (__tmp2) \
1.232 -- : "b" (mem), "1" (oldval), "r" (newval) \
1.233 -+ : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
1.234 -+ : "1" (oldval), "r" (newval) \
1.235 - : "cr0", "memory"); \
1.236 - __tmp != 0; \
1.237 - })
1.238 -@@ -82,14 +82,14 @@
1.239 - ({ \
1.240 - unsigned long __tmp; \
1.241 - __asm __volatile ( \
1.242 -- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
1.243 -+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
1.244 - " subf. %0,%2,%0\n" \
1.245 - " bne 2f\n" \
1.246 -- " stdcx. %3,0,%1\n" \
1.247 -+ " stdcx. %3,%y1\n" \
1.248 - " bne- 1b\n" \
1.249 - "2: " __ARCH_ACQ_INSTR \
1.250 -- : "=&r" (__tmp) \
1.251 -- : "b" (mem), "r" (oldval), "r" (newval) \
1.252 -+ : "=&r" (__tmp), "+Z" (*(mem)) \
1.253 -+ : "r" (oldval), "r" (newval) \
1.254 - : "cr0", "memory"); \
1.255 - __tmp != 0; \
1.256 - })
1.257 -@@ -98,14 +98,14 @@
1.258 - ({ \
1.259 - unsigned long __tmp; \
1.260 - __asm __volatile (__ARCH_REL_INSTR "\n" \
1.261 -- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
1.262 -+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
1.263 - " subf. %0,%2,%0\n" \
1.264 - " bne 2f\n" \
1.265 -- " stdcx. %3,0,%1\n" \
1.266 -+ " stdcx. %3,%y1\n" \
1.267 - " bne- 1b\n" \
1.268 - "2: " \
1.269 -- : "=&r" (__tmp) \
1.270 -- : "b" (mem), "r" (oldval), "r" (newval) \
1.271 -+ : "=&r" (__tmp), "+Z" (*(mem)) \
1.272 -+ : "r" (oldval), "r" (newval) \
1.273 - : "cr0", "memory"); \
1.274 - __tmp != 0; \
1.275 - })
1.276 -@@ -115,14 +115,14 @@
1.277 - __typeof (*(mem)) __tmp; \
1.278 - __typeof (mem) __memp = (mem); \
1.279 - __asm __volatile ( \
1.280 -- "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
1.281 -+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
1.282 - " cmpd %0,%2\n" \
1.283 - " bne 2f\n" \
1.284 -- " stdcx. %3,0,%1\n" \
1.285 -+ " stdcx. %3,%y1\n" \
1.286 - " bne- 1b\n" \
1.287 - "2: " __ARCH_ACQ_INSTR \
1.288 -- : "=&r" (__tmp) \
1.289 -- : "b" (__memp), "r" (oldval), "r" (newval) \
1.290 -+ : "=&r" (__tmp), "+Z" (*__memp) \
1.291 -+ : "r" (oldval), "r" (newval) \
1.292 - : "cr0", "memory"); \
1.293 - __tmp; \
1.294 - })
1.295 -@@ -132,14 +132,14 @@
1.296 - __typeof (*(mem)) __tmp; \
1.297 - __typeof (mem) __memp = (mem); \
1.298 - __asm __volatile (__ARCH_REL_INSTR "\n" \
1.299 -- "1: ldarx %0,0,%1" MUTEX_HINT_REL "\n" \
1.300 -+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
1.301 - " cmpd %0,%2\n" \
1.302 - " bne 2f\n" \
1.303 -- " stdcx. %3,0,%1\n" \
1.304 -+ " stdcx. %3,%y1\n" \
1.305 - " bne- 1b\n" \
1.306 - "2: " \
1.307 -- : "=&r" (__tmp) \
1.308 -- : "b" (__memp), "r" (oldval), "r" (newval) \
1.309 -+ : "=&r" (__tmp), "+Z" (*__memp) \
1.310 -+ : "r" (oldval), "r" (newval) \
1.311 - : "cr0", "memory"); \
1.312 - __tmp; \
1.313 - })
1.314 -@@ -148,12 +148,12 @@
1.315 - ({ \
1.316 - __typeof (*mem) __val; \
1.317 - __asm __volatile (__ARCH_REL_INSTR "\n" \
1.318 -- "1: ldarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
1.319 -- " stdcx. %3,0,%2\n" \
1.320 -+ "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
1.321 -+ " stdcx. %2,%y1\n" \
1.322 - " bne- 1b\n" \
1.323 - " " __ARCH_ACQ_INSTR \
1.324 -- : "=&r" (__val), "=m" (*mem) \
1.325 -- : "b" (mem), "r" (value), "m" (*mem) \
1.326 -+ : "=&r" (__val), "+Z" (*(mem)) \
1.327 -+ : "r" (value) \
1.328 - : "cr0", "memory"); \
1.329 - __val; \
1.330 - })
1.331 -@@ -162,11 +162,11 @@
1.332 - ({ \
1.333 - __typeof (*mem) __val; \
1.334 - __asm __volatile (__ARCH_REL_INSTR "\n" \
1.335 -- "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
1.336 -- " stdcx. %3,0,%2\n" \
1.337 -+ "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
1.338 -+ " stdcx. %2,%y1\n" \
1.339 - " bne- 1b" \
1.340 -- : "=&r" (__val), "=m" (*mem) \
1.341 -- : "b" (mem), "r" (value), "m" (*mem) \
1.342 -+ : "=&r" (__val), "+Z" (*(mem)) \
1.343 -+ : "r" (value) \
1.344 - : "cr0", "memory"); \
1.345 - __val; \
1.346 - })
1.347 -@@ -174,12 +174,12 @@
1.348 - #define __arch_atomic_exchange_and_add_64(mem, value) \
1.349 - ({ \
1.350 - __typeof (*mem) __val, __tmp; \
1.351 -- __asm __volatile ("1: ldarx %0,0,%3\n" \
1.352 -- " add %1,%0,%4\n" \
1.353 -- " stdcx. %1,0,%3\n" \
1.354 -+ __asm __volatile ("1: ldarx %0,%y2\n" \
1.355 -+ " add %1,%0,%3\n" \
1.356 -+ " stdcx. %1,%y2\n" \
1.357 - " bne- 1b" \
1.358 -- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
1.359 -- : "b" (mem), "r" (value), "m" (*mem) \
1.360 -+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
1.361 -+ : "r" (value) \
1.362 - : "cr0", "memory"); \
1.363 - __val; \
1.364 - })
1.365 -@@ -187,12 +187,12 @@
1.366 - #define __arch_atomic_increment_val_64(mem) \
1.367 - ({ \
1.368 - __typeof (*(mem)) __val; \
1.369 -- __asm __volatile ("1: ldarx %0,0,%2\n" \
1.370 -+ __asm __volatile ("1: ldarx %0,%y1\n" \
1.371 - " addi %0,%0,1\n" \
1.372 -- " stdcx. %0,0,%2\n" \
1.373 -+ " stdcx. %0,%y1\n" \
1.374 - " bne- 1b" \
1.375 -- : "=&b" (__val), "=m" (*mem) \
1.376 -- : "b" (mem), "m" (*mem) \
1.377 -+ : "=&b" (__val), "+Z" (*(mem)) \
1.378 -+ : \
1.379 - : "cr0", "memory"); \
1.380 - __val; \
1.381 - })
1.382 -@@ -200,27 +200,27 @@
1.383 - #define __arch_atomic_decrement_val_64(mem) \
1.384 - ({ \
1.385 - __typeof (*(mem)) __val; \
1.386 -- __asm __volatile ("1: ldarx %0,0,%2\n" \
1.387 -+ __asm __volatile ("1: ldarx %0,%y1\n" \
1.388 - " subi %0,%0,1\n" \
1.389 -- " stdcx. %0,0,%2\n" \
1.390 -+ " stdcx. %0,%y1\n" \
1.391 - " bne- 1b" \
1.392 -- : "=&b" (__val), "=m" (*mem) \
1.393 -- : "b" (mem), "m" (*mem) \
1.394 -+ : "=&b" (__val), "+Z" (*(mem)) \
1.395 -+ : \
1.396 - : "cr0", "memory"); \
1.397 - __val; \
1.398 - })
1.399 -
1.400 - #define __arch_atomic_decrement_if_positive_64(mem) \
1.401 - ({ int __val, __tmp; \
1.402 -- __asm __volatile ("1: ldarx %0,0,%3\n" \
1.403 -+ __asm __volatile ("1: ldarx %0,%y2\n" \
1.404 - " cmpdi 0,%0,0\n" \
1.405 - " addi %1,%0,-1\n" \
1.406 - " ble 2f\n" \
1.407 -- " stdcx. %1,0,%3\n" \
1.408 -+ " stdcx. %1,%y2\n" \
1.409 - " bne- 1b\n" \
1.410 - "2: " __ARCH_ACQ_INSTR \
1.411 -- : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
1.412 -- : "b" (mem), "m" (*mem) \
1.413 -+ : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
1.414 -+ : \
1.415 - : "cr0", "memory"); \
1.416 - __val; \
1.417 - })