From fea41ef9115fcf4bc499830d04f0c4160e01839f Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Mon, 22 Mar 2004 01:37:04 +0000 Subject: atomicity.h (__atomic_add): Remove "static inline" and attribute-unused. * config/cpu/cris/atomicity.h (__atomic_add): Remove "static inline" and attribute-unused. Qualify parameter __mem with "volatile". (__exchange_and_add): Ditto. Add back memory clobber to asm. From-SVN: r79804 --- libstdc++-v3/config/cpu/cris/atomicity.h | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'libstdc++-v3/config/cpu/cris') diff --git a/libstdc++-v3/config/cpu/cris/atomicity.h b/libstdc++-v3/config/cpu/cris/atomicity.h index 965e0da..3162f6a 100644 --- a/libstdc++-v3/config/cpu/cris/atomicity.h +++ b/libstdc++-v3/config/cpu/cris/atomicity.h @@ -31,9 +31,8 @@ namespace __gnu_cxx { - static inline _Atomic_word - __attribute__ ((__unused__)) - __exchange_and_add(_Atomic_word* __mem, int __val) + _Atomic_word + __exchange_and_add(volatile _Atomic_word* __mem, int __val) { int __tmp; _Atomic_word __result; @@ -49,9 +48,12 @@ namespace __gnu_cxx " bwf 0b \n" " clearf \n" : "=&r" (__result), "=m" (*__mem), "=&r" (__tmp) - : "r" (__mem), "g" (__val), "m" (*__mem)); + : "r" (__mem), "g" (__val), "m" (*__mem) + /* The memory clobber must stay, regardless of + current uses of this function. */ + : "memory"); #else - __asm__ __volatile__ (" move $ccr,$r9 \n" + __asm__ __volatile__ (" move $ccr,$r9 \n" " di \n" " move.d %4,%2 \n" " move.d [%3],%0 \n" @@ -60,14 +62,16 @@ namespace __gnu_cxx " move $r9,$ccr \n" : "=&r" (__result), "=m" (*__mem), "=&r" (__tmp) : "r" (__mem), "g" (__val), "m" (*__mem) - : "r9"); + : "r9", + /* The memory clobber must stay, regardless of + current uses of this function. */ + "memory"); #endif return __result; } void - __attribute__ ((__unused__)) - __atomic_add(_Atomic_word* __mem, int __val) + __atomic_add(volatile _Atomic_word* __mem, int __val) { __exchange_and_add(__mem, __val); } } // namespace __gnu_cxx -- cgit v1.1