OSDN Git Service

* config/cpu/i486/atomicity.h (__exchange_and_add, __atomic_add):
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Jan 2003 22:48:21 +0000 (22:48 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Jan 2003 22:48:21 +0000 (22:48 +0000)
        *__mem is also an output.
        * config/cpu/m68k/atomicity.h (__exchange_and_add): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@60807 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 337056e..ba62559 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 92f5011..73dedf1 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 db32735..5a2dda3 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;
 }