PERFORCE change 82235 for review

John Baldwin jhb at FreeBSD.org
Thu Aug 18 21:04:09 GMT 2005


http://perforce.freebsd.org/chv.cgi?CH=82235

Change 82235 by jhb at jhb_slimer on 2005/08/18 21:04:01

	MFktrace: Don't use + with memory operands.

Affected files ...

.. //depot/projects/smpng/sys/alpha/include/atomic.h#29 edit
.. //depot/projects/smpng/sys/amd64/include/atomic.h#26 edit
.. //depot/projects/smpng/sys/i386/include/atomic.h#42 edit
.. //depot/projects/smpng/sys/powerpc/include/atomic.h#15 edit

Differences ...

==== //depot/projects/smpng/sys/alpha/include/atomic.h#29 (text+ko) ====

@@ -56,12 +56,12 @@
 
 #ifdef __GNUCLIKE_ASM
 	__asm __volatile (
-		"1:\tldl_l %0, %2\n\t"		/* load old value */
-		"bis %0, %3, %0\n\t"		/* calculate new value */
+		"1:\tldl_l %0, %1\n\t"		/* load old value */
+		"bis %0, %2, %0\n\t"		/* calculate new value */
 		"stl_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n"			/* spin if failed */
 		: "=&r" (temp), "=m" (*p)
-		: "m" (*p), "r" (v)
+		: "r" (v), "m" (*p)
 		: "memory");
 #endif
 }
@@ -76,8 +76,8 @@
 		"bic %0, %2, %0\n\t"		/* calculate new value */
 		"stl_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (v), "m" (*p)
 		: "memory");
 #endif
 }
@@ -92,8 +92,8 @@
 		"addl %0, %2, %0\n\t"		/* calculate new value */
 		"stl_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (v), "m" (*p)
 		: "memory");
 #endif
 }
@@ -108,8 +108,8 @@
 		"subl %0, %2, %0\n\t"		/* calculate new value */
 		"stl_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (v), "m" (*p)
 		: "memory");
 #endif
 }
@@ -125,8 +125,8 @@
 		"ldiq %1,0\n\t"		/* value to store */
 		"stl_c %1,%2\n\t"	/* attempt to store */
 		"beq %1,1b\n"		/* if the store failed, spin */
-		: "=&r"(result), "=&r"(temp), "+m" (*addr)
-		:
+		: "=&r"(result), "=&r"(temp), "=m" (*addr)
+		: "m" (*addr)
 		: "memory");
 #endif
 
@@ -143,8 +143,8 @@
 		"bis %0, %2, %0\n\t"		/* calculate new value */
 		"stq_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (v), "m" (*p)
 		: "memory");
 #endif
 }
@@ -159,8 +159,8 @@
 		"bic %0, %2, %0\n\t"		/* calculate new value */
 		"stq_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (v), "m" (*p)
 		: "memory");
 #endif
 }
@@ -175,8 +175,8 @@
 		"addq %0, %2, %0\n\t"		/* calculate new value */
 		"stq_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (v), "m" (*p)
 		: "memory");
 #endif
 }
@@ -191,8 +191,8 @@
 		"subq %0, %2, %0\n\t"		/* calculate new value */
 		"stq_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (v), "m" (*p)
 		: "memory");
 #endif
 }
@@ -208,8 +208,8 @@
 		"ldiq %1,0\n\t"		/* value to store */
 		"stq_c %1,%2\n\t"	/* attempt to store */
 		"beq %1,1b\n"		/* if the store failed, spin */
-		: "=&r"(result), "=&r"(temp), "+m" (*addr)
-		:
+		: "=&r"(result), "=&r"(temp), "=m" (*addr)
+		: "m" (*addr)
 		: "memory");
 #endif
 
@@ -296,8 +296,8 @@
 		"stl_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n\t"		/* if it failed, spin */
 		"2:\n"
-		: "=&r" (ret), "+m" (*p)
-		: "r" ((long)(int)cmpval), "r" (newval)
+		: "=&r" (ret), "=m" (*p)
+		: "r" ((long)(int)cmpval), "r" (newval), "m" (*p)
 		: "memory");
 #endif
 
@@ -323,8 +323,8 @@
 		"stq_c %0, %1\n\t"		/* attempt to store */
 		"beq %0, 1b\n\t"		/* if it failed, spin */
 		"2:\n"
-		: "=&r" (ret), "+m" (*p)
-		: "r" (cmpval), "r" (newval)
+		: "=&r" (ret), "=m" (*p)
+		: "r" (cmpval), "r" (newval), "m" (*p)
 		: "memory");
 #endif
 

==== //depot/projects/smpng/sys/amd64/include/atomic.h#26 (text+ko) ====

@@ -99,8 +99,8 @@
 atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
 {							\
 	__asm __volatile(__XSTRING(MPLOCKED) OP		\
-			 : "+m" (*p)			\
-			 : CONS (V));			\
+			 : "=m" (*p)			\
+			 : CONS (V), "m" (*p));		\
 }							\
 struct __hack
 
@@ -119,15 +119,16 @@
 
 	__asm __volatile (
 	"	" __XSTRING(MPLOCKED) "	"
-	"	cmpxchgl %1,%2 ;	"
+	"	cmpxchgl %2,%1 ;	"
 	"       setz	%%al ;		"
 	"	movzbl	%%al,%0 ;	"
 	"1:				"
 	"# atomic_cmpset_int"
-	: "+a" (res)			/* 0 (result) */
-	: "r" (src),			/* 1 */
-	  "m" (*(dst))			/* 2 */
-	: "memory");				 
+	: "+a" (res), 			/* 0 (result) */
+	  "=m" (*dst)			/* 1 */
+	: "r" (src),			/* 2 */
+	  "m" (*dst)			/* 3 */
+	: "memory");
 
 	return (res);
 }
@@ -139,15 +140,16 @@
 
 	__asm __volatile (
 	"	" __XSTRING(MPLOCKED) "	"
-	"	cmpxchgq %1,%2 ;	"
+	"	cmpxchgq %2,%1 ;	"
 	"       setz	%%al ;		"
 	"	movzbq	%%al,%0 ;	"
 	"1:				"
 	"# atomic_cmpset_long"
-	: "+a" (res)			/* 0 (result) */
-	: "r" (src),			/* 1 */
-	  "m" (*(dst))			/* 2 */
-	: "memory");				 
+	: "+a" (res),			/* 0 (result) */
+	  "=m" (*dst)			/* 1 */
+	: "r" (src),			/* 2 */
+	  "m" (*dst)			/* 3 */
+	: "memory");
 
 	return (res);
 }
@@ -185,8 +187,9 @@
 							\
 	__asm __volatile(__XSTRING(MPLOCKED) LOP	\
 	: "=a" (res),			/* 0 (result) */\
-	  "+m" (*p)			/* 1 */		\
-	: : "memory");				 	\
+	  "=m" (*p)			/* 1 */		\
+	: "m" (*p)			/* 2 */		\
+	: "memory");				 	\
 							\
 	return (res);					\
 }							\
@@ -198,9 +201,9 @@
 atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
 {							\
 	__asm __volatile(SOP				\
-	: "+m" (*p),			/* 0 */		\
+	: "=m" (*p),			/* 0 */		\
 	  "+r" (v)			/* 1 */		\
-	: : "memory");				 	\
+	: "m" (*p));			/* 2 */		\
 }							\
 struct __hack
 
@@ -246,12 +249,13 @@
 {
 	u_int result;
 
+	result = 0;
 	__asm __volatile (
-	"	xorl	%0,%0 ;		"
 	"	xchgl	%1,%0 ;		"
 	"# atomic_readandclear_int"
-	: "=&r" (result)		/* 0 (result) */
-	: "m" (*addr));			/* 1 (addr) */
+	: "+r" (result),		/* 0 (result) */
+	  "=m" (*addr)			/* 1 (addr) */
+	: "m" (*addr));
 
 	return (result);
 }
@@ -261,12 +265,13 @@
 {
 	u_long result;
 
+	result = 0;
 	__asm __volatile (
-	"	xorq	%0,%0 ;		"
 	"	xchgq	%1,%0 ;		"
 	"# atomic_readandclear_long"
-	: "=&r" (result)		/* 0 (result) */
-	: "m" (*addr));			/* 1 (addr) */
+	: "+r" (result),		/* 0 (result) */
+	  "=m" (*addr)			/* 1 (addr) */
+	: "m" (*addr));
 
 	return (result);
 }

==== //depot/projects/smpng/sys/i386/include/atomic.h#42 (text+ko) ====

@@ -98,8 +98,8 @@
 atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
 {							\
 	__asm __volatile(__XSTRING(MPLOCKED) OP		\
-			 : "+m" (*p)			\
-			 : CONS (V));			\
+			 : "=m" (*p)			\
+			 : CONS (V), "m" (*p));		\
 }							\
 struct __hack
 
@@ -123,15 +123,16 @@
 	"	cli ;			"
 	"	cmpl	%0,%2 ;		"
 	"	jne	1f ;		"
-	"	movl	%1,%2 ;		"
+	"	movl	%2,%1 ;		"
 	"1:				"
 	"       sete	%%al;		"
 	"	movzbl	%%al,%0 ;	"
 	"	popfl ;			"
 	"# atomic_cmpset_int"
-	: "+a" (res)			/* 0 (result) */
-	: "r" (src),			/* 1 */
-	  "m" (*(dst))			/* 2 */
+	: "+a" (res),			/* 0 (result) */
+	  "=m" (*dst)			/* 1 */
+	: "r" (src),			/* 2 */
+	  "m" (*dst)			/* 3 */
 	: "memory");
 
 	return (res);
@@ -146,15 +147,16 @@
 
 	__asm __volatile (
 	"	" __XSTRING(MPLOCKED) "	"
-	"	cmpxchgl %1,%2 ;	"
+	"	cmpxchgl %2,%1 ;	"
 	"       setz	%%al ;		"
 	"	movzbl	%%al,%0 ;	"
 	"1:				"
 	"# atomic_cmpset_int"
-	: "+a" (res)			/* 0 (result) */
-	: "r" (src),			/* 1 */
-	  "m" (*(dst))			/* 2 */
-	: "memory");				 
+	: "+a" (res),			/* 0 (result) */
+	  "=m" (*dst)			/* 1 */
+	: "r" (src),			/* 2 */
+	  "m" (*dst)			/* 3 */
+	: "memory");
 
 	return (res);
 }
@@ -194,8 +196,9 @@
 							\
 	__asm __volatile(__XSTRING(MPLOCKED) LOP	\
 	: "=a" (res),			/* 0 (result) */\
-	  "+m" (*p)			/* 1 */		\
-	: : "memory");				 	\
+	  "=m" (*p)			/* 1 */		\
+	: "m" (*p)			/* 2 */		\
+	: "memory");					\
 							\
 	return (res);					\
 }							\
@@ -207,9 +210,9 @@
 atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
 {							\
 	__asm __volatile(SOP				\
-	: "+m" (*p),			/* 0 */		\
+	: "=m" (*p),			/* 0 */		\
 	  "+r" (v)			/* 1 */		\
-	: : "memory");				 	\
+	: "m" (*p));			/* 2 */		\
 }							\
 struct __hack
 
@@ -263,12 +266,13 @@
 {
 	u_int result;
 
+	result = 0;
 	__asm __volatile (
-	"	xorl	%0,%0 ;		"
 	"	xchgl	%1,%0 ;		"
 	"# atomic_readandclear_int"
-	: "=&r" (result)		/* 0 (result) */
-	: "m" (*addr));			/* 1 (addr) */
+	: "+r" (result),		/* 0 (result) */
+	  "=m" (*addr)			/* 1 (addr) */
+	: "m" (*addr));
 
 	return (result);
 }
@@ -278,12 +282,13 @@
 {
 	u_long result;
 
+	result = 0;
 	__asm __volatile (
-	"	xorl	%0,%0 ;		"
 	"	xchgl	%1,%0 ;		"
 	"# atomic_readandclear_long"
-	: "=&r" (result)		/* 0 (result) */
-	: "m" (*addr));			/* 1 (addr) */
+	: "+r" (result),		/* 0 (result) */
+	  "=m" (*addr)			/* 1 (addr) */
+	: "m" (*addr));
 
 	return (result);
 }

==== //depot/projects/smpng/sys/powerpc/include/atomic.h#15 (text+ko) ====

@@ -63,8 +63,8 @@
 		"or %0, %3, %0\n\t"		/* calculate new value */
 		"stwcx. %0, 0, %2\n\t"      	/* attempt to store */
 		"bne- 1b\n\t"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (p), "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (p), "r" (v), "m" (*p)
 		: "cc", "memory");
 #endif
 }
@@ -80,8 +80,8 @@
 		"andc %0, %0, %3\n\t"		/* calculate new value */
 		"stwcx. %0, 0, %2\n\t"      	/* attempt to store */
 		"bne- 1b\n\t"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (p), "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (p), "r" (v), "m" (*p)
 		: "cc", "memory");
 #endif
 }
@@ -97,8 +97,8 @@
 		"add %0, %3, %0\n\t"		/* calculate new value */
 		"stwcx. %0, 0, %2\n\t"      	/* attempt to store */
 		"bne- 1b\n\t"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (p), "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (p), "r" (v), "m" (*p)
 		: "cc", "memory");
 #endif
 }
@@ -114,8 +114,8 @@
 		"subf %0, %3, %0\n\t"		/* calculate new value */
 		"stwcx. %0, 0, %2\n\t"      	/* attempt to store */
 		"bne- 1b\n\t"			/* spin if failed */
-		: "=&r" (temp), "+m" (*p)
-		: "r" (p), "r" (v)
+		: "=&r" (temp), "=m" (*p)
+		: "r" (p), "r" (v), "m" (*p)
 		: "cc", "memory");
 #endif
 }
@@ -132,8 +132,8 @@
 		"li %1, 0\n\t"			/* load new value */
 		"stwcx. %1, 0, %3\n\t"      	/* attempt to store */
 		"bne- 1b\n\t"			/* spin if failed */
-		: "=&r"(result), "=&r"(temp), "+m" (*addr)
-		: "r" (addr)
+		: "=&r"(result), "=&r"(temp), "=m" (*addr)
+		: "r" (addr), "m" (*addr)
 		: "cc", "memory");
 #endif
 
@@ -382,8 +382,8 @@
 		"stwcx. %0, 0, %2\n\t"       	/* clear reservation (74xx) */
 		"li %0, 0\n\t"			/* failure - retval = 0 */
 		"3:\n\t"
-		: "=&r" (ret), "+m" (*p)
-		: "r" (p), "r" (cmpval), "r" (newval)
+		: "=&r" (ret), "=m" (*p)
+		: "r" (p), "r" (cmpval), "r" (newval), "m" (*p)
 		: "cc", "memory");
 #endif
 


More information about the p4-projects mailing list