1  // Low-level functions for atomic operations: version for CPUs providing
       2  // atomic builtins -*- C++ -*-
       3  
       4  // Copyright (C) 2006-2023 Free Software Foundation, Inc.
       5  //
       6  // This file is part of the GNU ISO C++ Library.  This library is free
       7  // software; you can redistribute it and/or modify it under the
       8  // terms of the GNU General Public License as published by the
       9  // Free Software Foundation; either version 3, or (at your option)
      10  // any later version.
      11  
      12  // This library is distributed in the hope that it will be useful,
      13  // but WITHOUT ANY WARRANTY; without even the implied warranty of
      14  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15  // GNU General Public License for more details.
      16  
      17  // Under Section 7 of GPL version 3, you are granted additional
      18  // permissions described in the GCC Runtime Library Exception, version
      19  // 3.1, as published by the Free Software Foundation.
      20  
      21  // You should have received a copy of the GNU General Public License and
      22  // a copy of the GCC Runtime Library Exception along with this program;
      23  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      24  // <http://www.gnu.org/licenses/>.
      25  
      26  #include <bits/c++config.h>
      27  #include <bits/atomic_word.h>
      28  
      29  namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
      30  {
      31  _GLIBCXX_BEGIN_NAMESPACE_VERSION
      32  
      33    _Atomic_word
      34    __attribute__ ((__unused__))
      35    __exchange_and_add(volatile _Atomic_word* __mem, int __val) throw ()
      36    { return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); }
      37  
      38    void
      39    __attribute__ ((__unused__))
      40    __atomic_add(volatile _Atomic_word* __mem, int __val) throw ()
      41    { __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); }
      42  
      43  _GLIBCXX_END_NAMESPACE_VERSION
      44  } // namespace