diff options
author | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2004-02-27 20:56:46 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2004-02-27 20:56:46 +0000 |
commit | 00d04db68213730dd9a17ad3a748c470382e5cf6 (patch) | |
tree | cebcd004858b979fcd297bf6b2c14d865aa20a2c /libstdc++-v3 | |
parent | c284a1261d4c603c648231f9e98b700a3602682e (diff) | |
download | gcc-00d04db68213730dd9a17ad3a748c470382e5cf6.tar.gz |
atomicity.h: Include c++config.h to get defines.
2004-02-27 Benjamin Kosnik <bkoz@redhat.com>
* config/cpu/hppa/atomicity.h: Include c++config.h to get defines.
* src/misc-inst.cc (_S_atomicity_lock): Move to __gnu_cxx.
* config/os/irix/irix5.2/atomicity.h: Merge..
* config/os/irix/irix6.5/atomicity.h: Merge..
* config/os/irix/atomicity.h: ...into this.
* config/os/irix/atomic_word.h: New.
* configure.host: Set atomic_word_dir for irix.
* hppa/atomicity.h: Change __Atomicity_lock to _Atomicity_lock.
* i386/atomicity.h: Same.
* m68k/atomicity.h: Same.
* sparc/atomicity.h: Same.
From-SVN: r78577
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 21 | ||||
-rw-r--r-- | libstdc++-v3/config/cpu/hppa/atomicity.h | 22 | ||||
-rw-r--r-- | libstdc++-v3/config/cpu/i386/atomicity.h | 12 | ||||
-rw-r--r-- | libstdc++-v3/config/cpu/m68k/atomicity.h | 14 | ||||
-rw-r--r-- | libstdc++-v3/config/cpu/sparc/atomicity.h | 14 | ||||
-rw-r--r-- | libstdc++-v3/config/os/irix/atomic_word.h (renamed from libstdc++-v3/config/os/irix/irix6.5/atomicity.h) | 25 | ||||
-rw-r--r-- | libstdc++-v3/config/os/irix/atomicity.h (renamed from libstdc++-v3/config/os/irix/irix5.2/atomicity.h) | 30 | ||||
-rw-r--r-- | libstdc++-v3/configure.host | 6 | ||||
-rw-r--r-- | libstdc++-v3/src/misc-inst.cc | 10 |
9 files changed, 75 insertions, 79 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a99ccea6bb3..c6fe7ae3f6c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,7 +1,24 @@ +2004-02-27 Benjamin Kosnik <bkoz@redhat.com> + + * config/cpu/hppa/atomicity.h: Include c++config.h to get defines. + + * src/misc-inst.cc (_S_atomicity_lock): Move to __gnu_cxx. + + * config/os/irix/irix5.2/atomicity.h: Merge.. + * config/os/irix/irix6.5/atomicity.h: Merge.. + * config/os/irix/atomicity.h: ...into this. + * config/os/irix/atomic_word.h: New. + * configure.host: Set atomic_word_dir for irix. + + * hppa/atomicity.h: Change __Atomicity_lock to _Atomicity_lock. + * i386/atomicity.h: Same. + * m68k/atomicity.h: Same. + * sparc/atomicity.h: Same. + 2004-02-27 David Edelsohn <edelsohn@gnu.org> * config/os/aix/atomicity.h: Use __gnu_cxx namespace. Remove - static, and inline keyworks. + static, and inline keywords. 2004-02-27 Paolo Carlini <pcarlini@suse.de> @@ -74,7 +91,7 @@ (ios_base::Init::~Init): Same. * src/locale.cc (locale::id::_M_id): Same. * config/cpu/i486/atomicity.h: Use __gnu_cxx namespace. Remove - static, and inline keyworks. + static, and inline keywords. * config/cpu/alpha/atomicity.h: Same. * config/cpu/cris/atomicity.h: Same. * config/cpu/generic/atomicity.h: Same. diff --git a/libstdc++-v3/config/cpu/hppa/atomicity.h b/libstdc++-v3/config/cpu/hppa/atomicity.h index 4e0c2525a70..2b1ce90de47 100644 --- a/libstdc++-v3/config/cpu/hppa/atomicity.h +++ b/libstdc++-v3/config/cpu/hppa/atomicity.h @@ -27,26 +27,26 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. +#include <bits/c++config.h> #include <bits/atomicity.h> namespace __gnu_cxx { - template<int __inst> - struct __Atomicity_lock + template<int _Inst> + struct _Atomicity_lock { static volatile int _S_atomicity_lock; }; - template<int __inst> + template<int _Inst> volatile int - __Atomicity_lock<__inst>::_S_atomicity_lock __attribute__ ((aligned (16))) = 1; + _Atomicity_lock<_Inst>::_S_atomicity_lock __attribute__ ((aligned (16))) = 1; - /* Because of the lack of weak support when using the hpux - som linker, we explicitly instantiate the atomicity lock - in src/misc-inst.cc when _GLIBCXX_INST_ATOMICITY_LOCK - is defined. */ + // Because of the lack of weak support when using the hpux som + // linker, we explicitly instantiate the atomicity lock in + // src/misc-inst.cc when _GLIBCXX_INST_ATOMICITY_LOCK is defined. #ifndef _GLIBCXX_INST_ATOMICITY_LOCK - template volatile int __Atomicity_lock<0>::_S_atomicity_lock; + template volatile int _Atomicity_lock<0>::_S_atomicity_lock; #endif int @@ -55,7 +55,7 @@ namespace __gnu_cxx { _Atomic_word result; int tmp; - volatile int& lock = __Atomicity_lock<0>::_S_atomicity_lock; + volatile int& lock = _Atomicity_lock<0>::_S_atomicity_lock; __asm__ __volatile__ ("ldcw 0(%1),%0\n\t" "cmpib,<>,n 0,%0,.+20\n\t" @@ -79,7 +79,7 @@ namespace __gnu_cxx __atomic_add(_Atomic_word* __mem, int __val) { int tmp; - volatile int& lock = __Atomicity_lock<0>::_S_atomicity_lock; + volatile int& lock = _Atomicity_lock<0>::_S_atomicity_lock; __asm__ __volatile__ ("ldcw 0(%1),%0\n\t" "cmpib,<>,n 0,%0,.+20\n\t" diff --git a/libstdc++-v3/config/cpu/i386/atomicity.h b/libstdc++-v3/config/cpu/i386/atomicity.h index 968bd249db2..92c03d59ab3 100644 --- a/libstdc++-v3/config/cpu/i386/atomicity.h +++ b/libstdc++-v3/config/cpu/i386/atomicity.h @@ -32,15 +32,15 @@ namespace __gnu_cxx { template<int __inst> - struct __Atomicity_lock + struct _Atomicity_lock { static volatile _Atomic_word _S_atomicity_lock; }; template<int __inst> - volatile _Atomic_word __Atomicity_lock<__inst>::_S_atomicity_lock = 0; + volatile _Atomic_word _Atomicity_lock<__inst>::_S_atomicity_lock = 0; - template volatile _Atomic_word __Atomicity_lock<0>::_S_atomicity_lock; + template volatile _Atomic_word _Atomicity_lock<0>::_S_atomicity_lock; _Atomic_word __attribute__ ((__unused__)) @@ -52,9 +52,9 @@ namespace __gnu_cxx do { __asm__ __volatile__ ("xchg{l} {%0,%1|%1,%0}" - : "=m" (__Atomicity_lock<0>::_S_atomicity_lock), + : "=m" (_Atomicity_lock<0>::_S_atomicity_lock), "+r" (__tmp) - : "m" (__Atomicity_lock<0>::_S_atomicity_lock)); + : "m" (_Atomicity_lock<0>::_S_atomicity_lock)); } while (__tmp); @@ -62,7 +62,7 @@ namespace __gnu_cxx *__mem += __val; // Release spin lock. - __Atomicity_lock<0>::_S_atomicity_lock = 0; + _Atomicity_lock<0>::_S_atomicity_lock = 0; return __result; } diff --git a/libstdc++-v3/config/cpu/m68k/atomicity.h b/libstdc++-v3/config/cpu/m68k/atomicity.h index b5827320c80..0e58f3c5f07 100644 --- a/libstdc++-v3/config/cpu/m68k/atomicity.h +++ b/libstdc++-v3/config/cpu/m68k/atomicity.h @@ -72,15 +72,15 @@ namespace __gnu_cxx #else template<int __inst> - struct __Atomicity_lock + struct _Atomicity_lock { static volatile unsigned char _S_atomicity_lock; }; template<int __inst> - volatile unsigned char __Atomicity_lock<__inst>::_S_atomicity_lock = 0; + volatile unsigned char _Atomicity_lock<__inst>::_S_atomicity_lock = 0; - template volatile unsigned char __Atomicity_lock<0>::_S_atomicity_lock; + template volatile unsigned char _Atomicity_lock<0>::_S_atomicity_lock; _Atomic_word __attribute__ ((__unused__)) @@ -92,13 +92,13 @@ namespace __gnu_cxx #if defined(__mcf5200__) || defined(__mcf5300__) __asm__ __volatile__("1: bset.b #7,%0@\n\tjbne 1b" : /* no outputs */ - : "a"(&__Atomicity_lock<0>::_S_atomicity_lock) + : "a"(&_Atomicity_lock<0>::_S_atomicity_lock) : "cc", "memory"); // CPU32 and MCF5400 support test-and-set (SMP-safe). #elif defined(__mcpu32__) || defined(__mcf5400__) __asm__ __volatile__("1: tas %0\n\tjbne 1b" - : "+m"(__Atomicity_lock<0>::_S_atomicity_lock) + : "+m"(_Atomicity_lock<0>::_S_atomicity_lock) : /* none */ : "cc"); @@ -107,7 +107,7 @@ namespace __gnu_cxx // memory controllers. #else __asm__ __volatile__("1: bset.b #7,%0\n\tjbne 1b" - : "+m"(__Atomicity_lock<0>::_S_atomicity_lock) + : "+m"(_Atomicity_lock<0>::_S_atomicity_lock) : /* none */ : "cc"); #endif @@ -115,7 +115,7 @@ namespace __gnu_cxx __result = *__mem; *__mem = __result + __val; - __Atomicity_lock<0>::_S_atomicity_lock = 0; + _Atomicity_lock<0>::_S_atomicity_lock = 0; return __result; } diff --git a/libstdc++-v3/config/cpu/sparc/atomicity.h b/libstdc++-v3/config/cpu/sparc/atomicity.h index 6d4b19b75bd..a39153b7139 100644 --- a/libstdc++-v3/config/cpu/sparc/atomicity.h +++ b/libstdc++-v3/config/cpu/sparc/atomicity.h @@ -70,15 +70,15 @@ namespace __gnu_cxx #else /* __arch32__ */ template<int __inst> - struct __Atomicity_lock + struct _Atomicity_lock { static unsigned char _S_atomicity_lock; }; template<int __inst> - unsigned char __Atomicity_lock<__inst>::_S_atomicity_lock = 0; + unsigned char _Atomicity_lock<__inst>::_S_atomicity_lock = 0; - template unsigned char __Atomicity_lock<0>::_S_atomicity_lock; + template unsigned char _Atomicity_lock<0>::_S_atomicity_lock; _Atomic_word __attribute__ ((__unused__)) @@ -91,13 +91,13 @@ namespace __gnu_cxx " bne 1b\n\t" " nop" : "=&r" (__tmp) - : "r" (&__Atomicity_lock<0>::_S_atomicity_lock) + : "r" (&_Atomicity_lock<0>::_S_atomicity_lock) : "memory"); __result = *__mem; *__mem += __val; __asm__ __volatile__("stb %%g0, [%0]" : /* no outputs */ - : "r" (&__Atomicity_lock<0>::_S_atomicity_lock) + : "r" (&_Atomicity_lock<0>::_S_atomicity_lock) : "memory"); return __result; } @@ -113,12 +113,12 @@ namespace __gnu_cxx " bne 1b\n\t" " nop" : "=&r" (__tmp) - : "r" (&__Atomicity_lock<0>::_S_atomicity_lock) + : "r" (&_Atomicity_lock<0>::_S_atomicity_lock) : "memory"); *__mem += __val; __asm__ __volatile__("stb %%g0, [%0]" : /* no outputs */ - : "r" (&__Atomicity_lock<0>::_S_atomicity_lock) + : "r" (&_Atomicity_lock<0>::_S_atomicity_lock) : "memory"); } #endif /* __arch32__ */ diff --git a/libstdc++-v3/config/os/irix/irix6.5/atomicity.h b/libstdc++-v3/config/os/irix/atomic_word.h index c7f5c83f4ed..68b8101c737 100644 --- a/libstdc++-v3/config/os/irix/irix6.5/atomicity.h +++ b/libstdc++-v3/config/os/irix/atomic_word.h @@ -1,6 +1,6 @@ -// Low-level functions for atomic operations: IRIX version -*- C++ -*- +// Low-level type for atomic operations -*- C++ -*- -// Copyright (C) 2000, 2001 Free Software Foundation, Inc. +// Copyright (C) 2004 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -27,24 +27,9 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. -#ifndef _BITS_ATOMICITY_H -#define _BITS_ATOMICITY_H 1 - -#include <mutex.h> +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 typedef long _Atomic_word; -static inline _Atomic_word -__exchange_and_add (_Atomic_word* __mem, int __val) -{ - return (_Atomic_word) test_then_add ((unsigned long*) __mem, __val); -} - - -static inline void -__atomic_add (_Atomic_word* __mem, int __val) -{ - __exchange_and_add (__mem, __val); -} - -#endif /* atomicity.h */ +#endif diff --git a/libstdc++-v3/config/os/irix/irix5.2/atomicity.h b/libstdc++-v3/config/os/irix/atomicity.h index bac483e2f16..83e9e029338 100644 --- a/libstdc++-v3/config/os/irix/irix5.2/atomicity.h +++ b/libstdc++-v3/config/os/irix/atomicity.h @@ -1,6 +1,6 @@ // Low-level functions for atomic operations: IRIX version -*- C++ -*- -// Copyright (C) 2001 Free Software Foundation, Inc. +// Copyright (C) 2001, 2004 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -27,24 +27,16 @@ // invalidate any other reasons why the executable file might be covered by // the GNU General Public License. -#ifndef _BITS_ATOMICITY_H -#define _BITS_ATOMICITY_H 1 - #include <mutex.h> +#include <bits/atomicity.h> -typedef long _Atomic_word; - -static inline _Atomic_word -__exchange_and_add (_Atomic_word* __mem, int __val) -{ - return (_Atomic_word) test_then_add ((unsigned long*) __mem, __val); -} - - -static inline void -__atomic_add (_Atomic_word* __mem, int __val) +namespace __gnu_cxx { - __exchange_and_add (__mem, __val); -} - -#endif /* atomicity.h */ + _Atomic_word + __exchange_and_add(volatile _Atomic_word* __mem, int __val) + { return (_Atomic_word) test_then_add((unsigned long*) const_cast<_Atomic_word*>(__mem), __val); } + + void + __atomic_add(volatile _Atomic_word* __mem, int __val) + { __exchange_and_add(__mem, __val); } +} // namespace __gnu_cxx diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host index f6492b29e5e..747cf74099a 100644 --- a/libstdc++-v3/configure.host +++ b/libstdc++-v3/configure.host @@ -170,11 +170,13 @@ case "${host_os}" in irix[1-6] | irix[1-5].* | irix6.[0-4]*) # This is known to work on at least IRIX 5.2 and 6.3. os_include_dir="os/irix/irix5.2" - atomicity_dir=$os_include_dir + atomicity_dir=os/irix + atomic_word_dir=os/irix ;; irix6.5*) os_include_dir="os/irix/irix6.5" - atomicity_dir=$os_include_dir + atomicity_dir=os/irix + atomic_word_dir=os/irix ;; mingw32*) os_include_dir="os/mingw32" diff --git a/libstdc++-v3/src/misc-inst.cc b/libstdc++-v3/src/misc-inst.cc index 37a4d3d460b..c4496525928 100644 --- a/libstdc++-v3/src/misc-inst.cc +++ b/libstdc++-v3/src/misc-inst.cc @@ -1,6 +1,6 @@ // Explicit instantiation file. -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -42,10 +42,6 @@ namespace std { -#ifdef _GLIBCXX_INST_ATOMICITY_LOCK - template volatile int __Atomicity_lock<0>::_S_atomicity_lock; -#endif - // string related to iostreams template basic_istream<char>& @@ -77,6 +73,10 @@ namespace std namespace __gnu_cxx { +#ifdef _GLIBCXX_INST_ATOMICITY_LOCK + template volatile int _Atomicity_lock<0>::_S_atomicity_lock; +#endif + #ifdef _GLIBCXX_NEED_GENERIC_MUTEX #ifdef __GTHREAD_MUTEX_INIT __gthread_mutex_t _Atomic_add_mutex = __GTHREAD_MUTEX_INIT; |