diff options
Diffstat (limited to 'libstdc++-v3/config/cpu/i486/atomicity.h')
-rw-r--r-- | libstdc++-v3/config/cpu/i486/atomicity.h | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/libstdc++-v3/config/cpu/i486/atomicity.h b/libstdc++-v3/config/cpu/i486/atomicity.h index 51ba5410c85..06ab866bbe3 100644 --- a/libstdc++-v3/config/cpu/i486/atomicity.h +++ b/libstdc++-v3/config/cpu/i486/atomicity.h @@ -34,24 +34,21 @@ typedef int _Atomic_word; static inline _Atomic_word __attribute__ ((__unused__)) -__exchange_and_add (volatile _Atomic_word *__mem, int __val) +__exchange_and_add(volatile _Atomic_word* __mem, int __val) { register _Atomic_word __result; __asm__ __volatile__ ("lock; xadd{l} {%0,%1|%1,%0}" - : "=r" (__result), "+m" (*__mem) - : "0" (__val) - : "memory"); + : "=r" (__result), "=m" (*__mem) + : "0" (__val), "m" (*__mem)); return __result; } static inline void __attribute__ ((__unused__)) -__atomic_add (volatile _Atomic_word* __mem, int __val) +__atomic_add(volatile _Atomic_word* __mem, int __val) { __asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}" - : "+m" (*__mem) : "ir" (__val) : "memory"); + : "=m" (*__mem) : "ir" (__val), "m" (*__mem)); } #endif /* atomicity.h */ - - |