diff options
author | Andrew Stubbs <ams@codesourcery.com> | 2009-04-06 16:47:32 +0000 |
---|---|---|
committer | Andrew Stubbs <ams@gcc.gnu.org> | 2009-04-06 16:47:32 +0000 |
commit | 8f2b104d098c61d43beb44a11d4474bab94b81fa (patch) | |
tree | 11a4f827dd5771a97461f63a4b07efc28ed1a9ff /libstdc++-v3 | |
parent | d26014d24e51999963a780a683e5a3b0c580a9bf (diff) | |
download | gcc-8f2b104d098c61d43beb44a11d4474bab94b81fa.zip gcc-8f2b104d098c61d43beb44a11d4474bab94b81fa.tar.gz gcc-8f2b104d098c61d43beb44a11d4474bab94b81fa.tar.bz2 |
atomicity.h: Put the SH4A specific functions in the __gnu_cxx namespace.
2009-04-06 Andrew Stubbs <ams@codesourcery.com>
* config/cpu/sh/atomicity.h: Put the SH4A specific functions in the
__gnu_cxx namespace. Remove "static inline".
From-SVN: r145613
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/config/cpu/sh/atomicity.h | 81 |
2 files changed, 46 insertions, 40 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index d2b1cd6..2ed825a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2009-04-06 Andrew Stubbs <ams@codesourcery.com> + + * config/cpu/sh/atomicity.h: Put the SH4A specific functions in the + __gnu_cxx namespace. Remove "static inline". + 2009-04-06 Paolo Carlini <paolo.carlini@oracle.com> * include/bits/random.tcc (linear_congruential_engine<>:: diff --git a/libstdc++-v3/config/cpu/sh/atomicity.h b/libstdc++-v3/config/cpu/sh/atomicity.h index f4bfb12..459cfdd 100644 --- a/libstdc++-v3/config/cpu/sh/atomicity.h +++ b/libstdc++-v3/config/cpu/sh/atomicity.h @@ -1,6 +1,6 @@ // Low-level functions for atomic operations: sh version -*- C++ -*- -// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006 +// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2009 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -30,47 +30,48 @@ #ifdef __SH4A__ -#ifndef _GLIBCXX_ATOMICITY_H -#define _GLIBCXX_ATOMICITY_H 1 +#include <ext/atomicity.h> -typedef int _Atomic_word; +_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) -static inline _Atomic_word -__attribute__ ((__unused__)) -__exchange_and_add (volatile _Atomic_word* __mem, int __val) -{ - _Atomic_word __result; - - __asm__ __volatile__ - ("0:\n" - "\tmovli.l\t@%2,r0\n" - "\tmov\tr0,%1\n" - "\tadd\t%3,r0\n" - "\tmovco.l\tr0,@%2\n" - "\tbf\t0b" - : "+m" (*__mem), "=r" (__result) - : "r" (__mem), "rI08" (__val) - : "r0"); - - return __result; -} - - -static inline void -__attribute__ ((__unused__)) -__atomic_add (volatile _Atomic_word* __mem, int __val) -{ - asm("0:\n" - "\tmovli.l\t@%1,r0\n" - "\tadd\t%2,r0\n" - "\tmovco.l\tr0,@%1\n" - "\tbf\t0b" - : "+m" (*__mem) - : "r" (__mem), "rI08" (__val) - : "r0"); -} - -#endif + typedef int _Atomic_word; + + _Atomic_word + __attribute__ ((__unused__)) + __exchange_and_add (volatile _Atomic_word* __mem, int __val) + { + _Atomic_word __result; + + __asm__ __volatile__ + ("0:\n" + "\tmovli.l\t@%2,r0\n" + "\tmov\tr0,%1\n" + "\tadd\t%3,r0\n" + "\tmovco.l\tr0,@%2\n" + "\tbf\t0b" + : "+m" (*__mem), "=r" (__result) + : "r" (__mem), "rI08" (__val) + : "r0"); + + return __result; + } + + + void + __attribute__ ((__unused__)) + __atomic_add (volatile _Atomic_word* __mem, int __val) + { + asm("0:\n" + "\tmovli.l\t@%1,r0\n" + "\tadd\t%2,r0\n" + "\tmovco.l\tr0,@%1\n" + "\tbf\t0b" + : "+m" (*__mem) + : "r" (__mem), "rI08" (__val) + : "r0"); + } + +_GLIBCXX_END_NAMESPACE #else /* !__SH4A__ */ |