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