atomicity.h (__exchange_and_add, [...]): *__mem is also an output.
authorJason Merrill <jason@redhat.com>
Thu, 2 Jan 2003 22:48:21 +0000 (17:48 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 2 Jan 2003 22:48:21 +0000 (17:48 -0500)
        * config/cpu/i486/atomicity.h (__exchange_and_add, __atomic_add):
        *__mem is also an output.
        * config/cpu/m68k/atomicity.h (__exchange_and_add): Likewise.

From-SVN: r60807

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

index 337056ec8cc70b216993549b5842588acf2c5805..ba62559eae5e4cb62b475e3de02fd187b8bcac3b 100644 (file)
@@ -1,3 +1,9 @@
+2003-01-02  Jason Merrill  <jason@redhat.com>
+
+       * config/cpu/i486/atomicity.h (__exchange_and_add, __atomic_add):
+       *__mem is also an output.
+       * config/cpu/m68k/atomicity.h (__exchange_and_add): Likewise.
+
 2002-12-30  Loren J. Rittle  <ljrittle@acm.org>
 
        * src/Makefile.am: Resolve non-portable use of $<.
index 92f5011c3a11cda31d9d3ee2ffb22298e4819125..73dedf10d9d9b8f99641cd255227c947eb9a94cc 100644 (file)
@@ -37,9 +37,9 @@ __attribute__ ((__unused__))
 __exchange_and_add (volatile _Atomic_word *__mem, int __val)
 {
   register _Atomic_word __result;
-  __asm__ __volatile__ ("lock; xaddl %0,%2"
-                       : "=r" (__result) 
-                        : "0" (__val), "m" (*__mem) 
+  __asm__ __volatile__ ("lock; xaddl %0,%1"
+                       : "=r" (__result), "+m" (*__mem) 
+                        : "0" (__val)
                         : "memory");
   return __result;
 }
@@ -48,8 +48,8 @@ static inline void
 __attribute__ ((__unused__))
 __atomic_add (volatile _Atomic_word* __mem, int __val)
 {
-  __asm__ __volatile__ ("lock; addl %0,%1"
-                       : : "ir" (__val), "m" (*__mem) : "memory");
+  __asm__ __volatile__ ("lock; addl %1,%0"
+                       : "+m" (*__mem) : "ir" (__val) : "memory");
 }
 
 #endif /* atomicity.h */
index db327355954e66c4ae0066b75fa1a84724cc855a..5a2dda3228c2551166bc54583934c7d54caf8c27 100644 (file)
@@ -43,11 +43,11 @@ __exchange_and_add (volatile _Atomic_word *__mem, int __val)
   register _Atomic_word __result = *__mem;
   register _Atomic_word __temp;
   __asm__ __volatile__ ("1: move%.l %0,%1\n\t"
-                       "add%.l %2,%1\n\t"
-                       "cas%.l %0,%1,%3\n\t"
+                       "add%.l %3,%1\n\t"
+                       "cas%.l %0,%1,%2\n\t"
                        "jne 1b"
-                       : "=d" (__result), "=&d" (__temp)
-                       : "d" (__val), "m" (*__mem), "0" (__result)
+                       : "=d" (__result), "=&d" (__temp), "+m" (*__mem)
+                       : "d" (__val), "0" (__result)
                        : "memory");
   return __result;
 }