patches/glibc/ports-2.12.1/560-ppc-atomic.patch
author Titus von Boxberg <titus@v9g.de>
Tue Nov 06 17:02:06 2012 +0100 (2012-11-06)
changeset 3103 a8bf927f6e37
permissions -rw-r--r--
Makefile.in: Use only standard options compatible with BSD install

Don't use options specific to FSF's coreutils install.

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