PERFORCE change 72666 for review
John Baldwin
jhb at FreeBSD.org
Mon Mar 7 14:20:19 PST 2005
http://perforce.freebsd.org/chv.cgi?CH=72666
Change 72666 by jhb at jhb_slimer on 2005/03/07 22:19:49
- Don't use +m.
- Lose unneeded "memory" clobbers.
- Add explicit "memory" clobbers to acq variants. (XXX: this won't
take affect until the clobber is removed from powerpc_mb()).
Affected files ...
.. //depot/projects/smpng/sys/powerpc/include/atomic.h#6 edit
Differences ...
==== //depot/projects/smpng/sys/powerpc/include/atomic.h#6 (text+ko) ====
@@ -59,9 +59,9 @@
"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)
- : "cc", "memory");
+ : "=&r" (temp), "=m" (*p)
+ : "r" (p), "r" (v), "m" (*p)
+ : "cc");
#endif
}
@@ -76,9 +76,9 @@
"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)
- : "cc", "memory");
+ : "=&r" (temp), "=m" (*p)
+ : "r" (p), "r" (v), "m" (*p)
+ : "cc");
#endif
}
@@ -93,9 +93,9 @@
"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)
- : "cc", "memory");
+ : "=&r" (temp), "=m" (*p)
+ : "r" (p), "r" (v), "m" (*p)
+ : "cc");
#endif
}
@@ -110,9 +110,9 @@
"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)
- : "cc", "memory");
+ : "=&r" (temp), "=m" (*p)
+ : "r" (p), "r" (v), "m" (*p)
+ : "cc");
#endif
}
@@ -128,9 +128,9 @@
"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)
- : "cc", "memory");
+ : "=&r"(result), "=&r"(temp), "=m" (*addr)
+ : "r" (addr), "m" (*p)
+ : "cc");
#endif
return (result);
@@ -244,6 +244,7 @@
{ \
atomic_##NAME##_##WIDTH(p, v); \
powerpc_mb(); \
+ __asm __volatile("" ::: "memory"); \
} \
\
static __inline void \
@@ -258,6 +259,7 @@
{ \
atomic_##NAME##_##WIDTH(p, v); \
powerpc_mb(); \
+ __asm __volatile("" ::: "memory"); \
} \
\
static __inline void \
@@ -302,6 +304,7 @@
\
v = *p; \
powerpc_mb(); \
+ __asm __volatile("" ::: "memory"); \
return (v); \
} \
\
@@ -361,9 +364,9 @@
"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)
- : "cc", "memory");
+ : "=&r" (ret), "=m" (*p)
+ : "r" (p), "r" (cmpval), "r" (newval), "m" (*p)
+ : "cc");
#endif
return (ret);
@@ -413,6 +416,7 @@
retval = atomic_cmpset_32(p, cmpval, newval);
powerpc_mb();
+ __asm __volatile("" ::: "memory");
return (retval);
}
More information about the p4-projects
mailing list