From 1c6682fa9f927829bbe635f7b1d52152dea1cf51 Mon Sep 17 00:00:00 2001 From: Ramana Radhakrishnan Date: Fri, 12 Jun 2015 09:55:38 +0000 Subject: [PATCH] Use atomics in guard.cc / remove special casing in targets. The PowerPC, AIX, Alpha, IA64 implementations of atomic_word.h are in no way different from what can be achieved with the generic rewrite in Patch 1 of this series - delete these. 2015-06-12 Ramana Radhakrishnan * config/cpu/alpha/atomic_word.h: Remove. * config/cpu/ia64/atomic_word.h: Remove. * config/cpu/powerpc/atomic_word.h: Remove. * config/os/aix/atomic_word.h: Remove. * configure.host (atomic_word_dir) [ia64, aix*, powerpc, alpha]: Use generic definition. From-SVN: r224413 --- libstdc++-v3/config/cpu/alpha/atomic_word.h | 33 ---------- libstdc++-v3/config/cpu/ia64/atomic_word.h | 64 ------------------- libstdc++-v3/config/cpu/powerpc/atomic_word.h | 38 ----------- libstdc++-v3/config/os/aix/atomic_word.h | 43 ------------- 4 files changed, 178 deletions(-) delete mode 100644 libstdc++-v3/config/cpu/alpha/atomic_word.h delete mode 100644 libstdc++-v3/config/cpu/ia64/atomic_word.h delete mode 100644 libstdc++-v3/config/cpu/powerpc/atomic_word.h delete mode 100644 libstdc++-v3/config/os/aix/atomic_word.h diff --git a/libstdc++-v3/config/cpu/alpha/atomic_word.h b/libstdc++-v3/config/cpu/alpha/atomic_word.h deleted file mode 100644 index 9d3d7086fe5..00000000000 --- a/libstdc++-v3/config/cpu/alpha/atomic_word.h +++ /dev/null @@ -1,33 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2015 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 -// . - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - -#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("mb":::"memory") -#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("wmb":::"memory") - -#endif diff --git a/libstdc++-v3/config/cpu/ia64/atomic_word.h b/libstdc++-v3/config/cpu/ia64/atomic_word.h deleted file mode 100644 index 6aeeb647002..00000000000 --- a/libstdc++-v3/config/cpu/ia64/atomic_word.h +++ /dev/null @@ -1,64 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2015 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 -// . - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -#include - -typedef int _Atomic_word; - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ - // Test the first byte of __g and ensure that no loads are hoisted across - // the test. - inline bool - __test_and_acquire (__cxxabiv1::__guard *__g) - { - unsigned char __c; - unsigned char *__p = reinterpret_cast(__g); - // ldN.acq is a load with an implied hoist barrier. - // would ld8+mask be faster than just doing an ld1? - __asm __volatile ("ld1.acq %0 = %1" : "=r"(__c) : "m"(*__p) : "memory"); - return __c != 0; - } - - // Set the first byte of __g to 1 and ensure that no stores are sunk - // across the store. - inline void - __set_and_release (__cxxabiv1::__guard *__g) - { - unsigned char *__p = reinterpret_cast(__g); - // stN.rel is a store with an implied sink barrier. - // could load word, set flag, and CAS it back - __asm __volatile ("st1.rel %0 = %1" : "=m"(*__p) : "r"(1) : "memory"); - } - - // We don't define the _BARRIER macros on ia64 because the barriers are - // included in the test and set, above. -#define _GLIBCXX_GUARD_TEST_AND_ACQUIRE(G) __gnu_cxx::__test_and_acquire (G) -#define _GLIBCXX_GUARD_SET_AND_RELEASE(G) __gnu_cxx::__set_and_release (G) -} - -#endif diff --git a/libstdc++-v3/config/cpu/powerpc/atomic_word.h b/libstdc++-v3/config/cpu/powerpc/atomic_word.h deleted file mode 100644 index 1ceb02cf702..00000000000 --- a/libstdc++-v3/config/cpu/powerpc/atomic_word.h +++ /dev/null @@ -1,38 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2015 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 -// . - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - -#ifdef __NO_LWSYNC__ -#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("sync":::"memory") -#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("sync":::"memory") -#else -#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("lwsync":::"memory") -#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("lwsync":::"memory") -#endif - -#endif diff --git a/libstdc++-v3/config/os/aix/atomic_word.h b/libstdc++-v3/config/os/aix/atomic_word.h deleted file mode 100644 index 2b2647a8b01..00000000000 --- a/libstdc++-v3/config/os/aix/atomic_word.h +++ /dev/null @@ -1,43 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2015 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 -// . - -/** @file bits/atomic_word.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/atomicity.h} - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - -#ifdef _ARCH_PPC -#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("isync":::"memory") -#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("sync":::"memory") -#else -#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory") -#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory") -#endif - -#endif -- 2.30.2