patches/glibc/2.9/500-ppc-glibc-2.9-atomic.patch
author danielrubiob@gmail.com
Tue Feb 11 21:34:48 2014 +0100 (2014-02-11)
changeset 3285 a8cb9039fade
parent 1201 c9967a6e3b25
permissions -rw-r--r--
complibs/cloog: bump version

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