patches/glibc/ports-2.10.1/560-ppc-atomic.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jan 17 23:06:02 2010 +0100 (2010-01-17)
changeset 1740 c57458bb354d
permissions -rw-r--r--
configure: do not require hg when configuring in an hg clone

When configuring in an hg clone, we need hg to compute the version string.
It can happen that users do not have Mercurial (eg. if they got a snapshot
rather that they did a full clone). In this case, we can still run, of
course, so simply fill the version string with a sufficiently explicit
value, that does not require hg. The date is a good candidate.
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
   })