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
This commit is contained in:
Andrew Stubbs 2009-04-06 16:47:32 +00:00 committed by Andrew Stubbs
parent d26014d24e
commit 8f2b104d09
2 changed files with 41 additions and 35 deletions

View File

@ -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<>::

View File

@ -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;
typedef int _Atomic_word;
__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");
_Atomic_word
__attribute__ ((__unused__))
__exchange_and_add (volatile _Atomic_word* __mem, int __val)
{
_Atomic_word __result;
return __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");
}
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
_GLIBCXX_END_NAMESPACE
#else /* !__SH4A__ */