patches/glibc/2_9/500-ppc-glibc-2.9-atomic.patch
branchnewlib
changeset 1365 c4d124ed9f8e
parent 1364 9227d2a2c080
child 1366 5e5d1e6f55d3
     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 -   })