re PR libstdc++/9815 (atomicity.h - fails to compile with -O3 -masm=intel)
authorAndrew Pinski <pinskia@physics.uc.edu>
Mon, 2 Jun 2003 18:38:32 +0000 (18:38 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Mon, 2 Jun 2003 18:38:32 +0000 (18:38 +0000)
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

libstdc++-v3/ChangeLog
libstdc++-v3/config/cpu/i386/atomicity.h
libstdc++-v3/config/cpu/i486/atomicity.h

index 7e204bc..0848e64 100644 (file)
@@ -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>
 
index ac9f770..d619dbb 100644 (file)
@@ -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);
index 73dedf1..7c65fab 100644 (file)
@@ -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");
 }