patches/glibc/ports-2.10.1/560-ppc-atomic.patch
author Arnaud Lacombe <lacombar@gmail.com>
Thu Aug 05 17:59:51 2010 +0200 (2010-08-05)
changeset 2069 366bd2b22675
permissions -rw-r--r--
complibs/mpc: fix MPC 0.8.1 build with MPFR 3.0.0

This is the change introduced by revision 734 of MPC repository.

Author: Paul Zimmermann <Paul.Zimmermann@loria.fr>
Revision log: [acos.c] fixed problem with GMP_RNDA (should be MPFR_RNDA, and code was wrong)

Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
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
   })