summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorBenjamin Kosnik <bkoz@gcc.gnu.org>2004-02-27 20:56:46 +0000
committerBenjamin Kosnik <bkoz@gcc.gnu.org>2004-02-27 20:56:46 +0000
commit00d04db68213730dd9a17ad3a748c470382e5cf6 (patch)
treecebcd004858b979fcd297bf6b2c14d865aa20a2c /libstdc++-v3
parentc284a1261d4c603c648231f9e98b700a3602682e (diff)
downloadgcc-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/ChangeLog21
-rw-r--r--libstdc++-v3/config/cpu/hppa/atomicity.h22
-rw-r--r--libstdc++-v3/config/cpu/i386/atomicity.h12
-rw-r--r--libstdc++-v3/config/cpu/m68k/atomicity.h14
-rw-r--r--libstdc++-v3/config/cpu/sparc/atomicity.h14
-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.host6
-rw-r--r--libstdc++-v3/src/misc-inst.cc10
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;