Commit 1b1a632b by Michael Eager Committed by Phil Edwards

atomicity.h: Prevent reg loads between LL and SC instructions.

2004-03-19  Michael Eager  <eager@mvista.com>

	* config/cpu/mips/atomicity.h:  Prevent reg loads between LL and
	SC instructions.

From-SVN: r79711
parent 24d82bce
2004-03-19 Michael Eager <eager@mvista.com>
* config/cpu/mips/atomicity.h: Prevent reg loads between LL and
SC instructions.
2004-03-19 Paolo Carlini <pcarlini@suse.de> 2004-03-19 Paolo Carlini <pcarlini@suse.de>
* testsuite/22_locale/num_get/get/char/11.cc: Remove redundant * testsuite/22_locale/num_get/get/char/11.cc: Remove redundant
......
...@@ -44,14 +44,15 @@ namespace __gnu_cxx ...@@ -44,14 +44,15 @@ namespace __gnu_cxx
#if _MIPS_SIM == _ABIO32 #if _MIPS_SIM == _ABIO32
".set mips2\n\t" ".set mips2\n\t"
#endif #endif
"ll %0,%3\n\t" "ll %0,0(%2)\n\t"
"addu %1,%4,%0\n\t" "addu %1,%3,%0\n\t"
"sc %1,%2\n\t" "sc %1,0(%2)\n\t"
".set pop\n\t" ".set pop\n\t"
"beqz %1,1b\n\t" "beqz %1,1b\n\t"
"/* End exchange & add */" "/* End exchange & add */"
: "=&r"(__result), "=&r"(__tmp), "=m"(*__mem) : "=&r"(__result), "=&r"(__tmp)
: "m" (*__mem), "r"(__val)); : "r"(__mem), "r"(__val)
: "memory" );
return __result; return __result;
} }
...@@ -69,13 +70,14 @@ namespace __gnu_cxx ...@@ -69,13 +70,14 @@ namespace __gnu_cxx
#if _MIPS_SIM == _ABIO32 #if _MIPS_SIM == _ABIO32
".set mips2\n\t" ".set mips2\n\t"
#endif #endif
"ll %0,%2\n\t" "ll %0,0(%1)\n\t"
"addu %0,%3,%0\n\t" "addu %0,%2,%0\n\t"
"sc %0,%1\n\t" "sc %0,0(%1)\n\t"
".set pop\n\t" ".set pop\n\t"
"beqz %0,1b\n\t" "beqz %0,1b\n\t"
"/* End atomic add */" "/* End atomic add */"
: "=&r"(__result), "=m"(*__mem) : "=&r"(__result)
: "m" (*__mem), "r"(__val)); : "r"(__mem), "r"(__val)
: "memory" );
} }
} // namespace __gnu_cxx } // namespace __gnu_cxx
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment