patches/glibc/ports-2.13/560-ppc-atomic.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 17 17:54:21 2011 +0200 (2011-07-17)
changeset 2888 dd71df95903a
permissions -rw-r--r--
cc/gcc: pass the companion libs prefix to cc_core

In case of canadian-cross, the companion libraries are not the same for
the core cc (they run on 'build') as they are for the final cc (they run
on 'host').

Prepare for this differentiation (coming later), while retaining the
current behavior (to use the same compblibs).

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