aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2003-06-02 18:38:32 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2003-06-02 18:38:32 +0000
commit159ca3a3a48450cdf80bf9131073cc1e6402edc4 (patch)
treee79df46115727918a39143461314e30e19239fc1
parent62929dd980996e79b9e4668b31c4a7fa48b0bef7 (diff)
downloadgcc-159ca3a3a48450cdf80bf9131073cc1e6402edc4.zip
gcc-159ca3a3a48450cdf80bf9131073cc1e6402edc4.tar.gz
gcc-159ca3a3a48450cdf80bf9131073cc1e6402edc4.tar.bz2
re PR libstdc++/9815 (atomicity.h - fails to compile with -O3 -masm=intel)
2003-06-02 Andrew Pinski <pinskia@physics.uc.edu> PR libstdc++/9815 * config/cpu/i386/atomicity.h (__exchange_and_add): add intel asm case to asm. * config/cpu/i486/atomicity.h (__exchange_and_add): Likewise. (__atomic_add): likewise. From-SVN: r67343
-rw-r--r--libstdc++-v3/ChangeLog11
-rw-r--r--libstdc++-v3/config/cpu/i386/atomicity.h2
-rw-r--r--libstdc++-v3/config/cpu/i486/atomicity.h4
3 files changed, 13 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 7e204bc..0848e64 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2003-06-02 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR libstdc++/9815
+ * config/cpu/i386/atomicity.h (__exchange_and_add): add intel
+ asm case to asm.
+ * config/cpu/i486/atomicity.h (__exchange_and_add): Likewise.
+ (__atomic_add): likewise.
+
2003-06-02 Paolo Carlini <pcarlini@unitus.it>
* include/bits/sstream.tcc (pbackfail): Minor clean up and
@@ -86,7 +94,8 @@
2003-05-27 Jonathan Wakely <redi@gcc.gnu.org>
- * include/std/std_istream.h, include/std/std_ostream.h: Typo in comment.
+ * include/std/std_istream.h, include/std/std_ostream.h: Typo in
+ comment.
2003-05-26 Benjamin Kosnik <bkoz@redhat.com>
diff --git a/libstdc++-v3/config/cpu/i386/atomicity.h b/libstdc++-v3/config/cpu/i386/atomicity.h
index ac9f770..d619dbb 100644
--- a/libstdc++-v3/config/cpu/i386/atomicity.h
+++ b/libstdc++-v3/config/cpu/i386/atomicity.h
@@ -51,7 +51,7 @@ __exchange_and_add (volatile _Atomic_word *__mem, int __val)
/* obtain the atomic exchange/add spin lock */
do {
- __asm__ __volatile__ ("xchgl %0,%1"
+ __asm__ __volatile__ ("xchg{l} {%0,%1|%1,%0}"
: "+m" (__Atomicity_lock<0>::_S_atomicity_lock),
"+r" (__tmp));
} while (__tmp);
diff --git a/libstdc++-v3/config/cpu/i486/atomicity.h b/libstdc++-v3/config/cpu/i486/atomicity.h
index 73dedf1..7c65fab 100644
--- a/libstdc++-v3/config/cpu/i486/atomicity.h
+++ b/libstdc++-v3/config/cpu/i486/atomicity.h
@@ -37,7 +37,7 @@ __attribute__ ((__unused__))
__exchange_and_add (volatile _Atomic_word *__mem, int __val)
{
register _Atomic_word __result;
- __asm__ __volatile__ ("lock; xaddl %0,%1"
+ __asm__ __volatile__ ("lock; xadd{l} {%0,%1|%1,%0}"
: "=r" (__result), "+m" (*__mem)
: "0" (__val)
: "memory");
@@ -48,7 +48,7 @@ static inline void
__attribute__ ((__unused__))
__atomic_add (volatile _Atomic_word* __mem, int __val)
{
- __asm__ __volatile__ ("lock; addl %1,%0"
+ __asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}"
: "+m" (*__mem) : "ir" (__val) : "memory");
}