locking problem with mips atomicity
Michael Eager
eager@mvista.com
Tue Mar 16 22:46:00 GMT 2004
Richard Henderson wrote:
>
> On Tue, Mar 16, 2004 at 09:46:55AM -0800, Michael Eager wrote:
> > How?
>
> Add an additional "r"(__mem).
Well, that's surprising. I was able to get rid of all of the
other changes.
Revised patch attached.
--
Michael Eager eager@mvista.com 408-328-8426
MontaVista Software, Inc. 1237 E. Arques Ave., Sunnyvale, CA 94085
-------------- next part --------------
2004-03-10 Michael Eager <eager@mvista.com>
* libstdc++-v3/config/cpu/mips/atomicity.h: Prevent reg
loads between LL and SC instructions.
Index: ./libstdc++-v3/config/cpu/mips/atomicity.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/config/cpu/mips/atomicity.h,v
retrieving revision 1.9
diff -u -r1.9 atomicity.h
--- ./libstdc++-v3/config/cpu/mips/atomicity.h 27 Feb 2004 00:49:48 -0000 1.9
+++ ./libstdc++-v3/config/cpu/mips/atomicity.h 16 Mar 2004 22:43:34 -0000
@@ -51,7 +51,7 @@
"beqz %1,1b\n\t"
"/* End exchange & add */"
: "=&r"(__result), "=&r"(__tmp), "=m"(*__mem)
- : "m" (*__mem), "r"(__val));
+ : "m" (*__mem), "r"(__val), "r"(__mem));
return __result;
}
@@ -76,6 +76,6 @@
"beqz %0,1b\n\t"
"/* End atomic add */"
: "=&r"(__result), "=m"(*__mem)
- : "m" (*__mem), "r"(__val));
+ : "m" (*__mem), "r"(__val), "r"(__mem));
}
} // namespace __gnu_cxx
More information about the Gcc
mailing list