aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/libstdc++-v3/config/cpu/sparc/atomicity.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.3/libstdc++-v3/config/cpu/sparc/atomicity.h')
-rw-r--r--gcc-4.4.3/libstdc++-v3/config/cpu/sparc/atomicity.h122
1 files changed, 0 insertions, 122 deletions
diff --git a/gcc-4.4.3/libstdc++-v3/config/cpu/sparc/atomicity.h b/gcc-4.4.3/libstdc++-v3/config/cpu/sparc/atomicity.h
deleted file mode 100644
index be3b07f3f..000000000
--- a/gcc-4.4.3/libstdc++-v3/config/cpu/sparc/atomicity.h
+++ /dev/null
@@ -1,122 +0,0 @@
-// Low-level functions for atomic operations: Sparc version -*- C++ -*-
-
-// Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005, 2009
-// 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
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-#include <ext/atomicity.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
-#ifdef __arch64__
- _Atomic_word
- __attribute__ ((__unused__))
- __exchange_and_add(volatile _Atomic_word* __mem, int __val)
- {
- _Atomic_word __tmp1, __tmp2;
- _Atomic_word __val_extended = __val;
-
- __asm__ __volatile__("1: ldx [%3], %0\n\t"
- " add %0, %4, %1\n\t"
- " casx [%3], %0, %1\n\t"
- " sub %0, %1, %0\n\t"
- " brnz,pn %0, 1b\n\t"
- " nop"
- : "=&r" (__tmp1), "=&r" (__tmp2), "=m" (*__mem)
- : "r" (__mem), "r" (__val_extended), "m" (*__mem));
- return __tmp2;
- }
-
- void
- __attribute__ ((__unused__))
- __atomic_add(volatile _Atomic_word* __mem, int __val)
- {
- _Atomic_word __tmp1, __tmp2;
- _Atomic_word __val_extended = __val;
-
- __asm__ __volatile__("1: ldx [%3], %0\n\t"
- " add %0, %4, %1\n\t"
- " casx [%3], %0, %1\n\t"
- " sub %0, %1, %0\n\t"
- " brnz,pn %0, 1b\n\t"
- " nop"
- : "=&r" (__tmp1), "=&r" (__tmp2), "=m" (*__mem)
- : "r" (__mem), "r" (__val_extended), "m" (*__mem));
- }
-
-#else /* __arch32__ */
-
- template<int __inst>
- struct _Atomicity_lock
- {
- static unsigned char _S_atomicity_lock;
- };
-
- template<int __inst>
- unsigned char _Atomicity_lock<__inst>::_S_atomicity_lock = 0;
-
- template unsigned char _Atomicity_lock<0>::_S_atomicity_lock;
-
- _Atomic_word
- __attribute__ ((__unused__))
- __exchange_and_add(volatile _Atomic_word* __mem, int __val)
- {
- _Atomic_word __result, __tmp;
-
- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
- " cmp %0, 0\n\t"
- " bne 1b\n\t"
- " nop"
- : "=&r" (__tmp)
- : "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)
- : "memory");
- return __result;
- }
-
- void
- __attribute__ ((__unused__))
- __atomic_add(volatile _Atomic_word* __mem, int __val)
- {
- _Atomic_word __tmp;
-
- __asm__ __volatile__("1: ldstub [%1], %0\n\t"
- " cmp %0, 0\n\t"
- " bne 1b\n\t"
- " nop"
- : "=&r" (__tmp)
- : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
- : "memory");
- *__mem += __val;
- __asm__ __volatile__("stb %%g0, [%0]"
- : /* no outputs */
- : "r" (&_Atomicity_lock<0>::_S_atomicity_lock)
- : "memory");
- }
-#endif /* __arch32__ */
-
-_GLIBCXX_END_NAMESPACE