Thread: [PATCH] sh: Add support Renesas SuperH
Hi, all. I want to use Postgresql on Reneas SuperH. However, this has not supported SuperH yet. I wrote the patch to support it. Please apply. Best regards, Nobuhiro # please CC me, i'm not on the list. --- This patch support slock_t and tas function for Renesas SuperH. Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org> --- src/include/storage/s_lock.h | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h index b06bd1b..4a8da8a 100644 --- a/src/include/storage/s_lock.h +++ b/src/include/storage/s_lock.h @@ -567,6 +567,29 @@ typedef int slock_t; #endif /* __m32r__ */ +#if defined(__sh__) /* Renesas SuperH */ +#define HAS_TEST_AND_SET + +typedef unsigned char slock_t; + +#define TAS(lock) tas(lock) + +static __inline__ int +tas(volatile slock_t *lock) +{ + register slock_t _res = 1; + + __asm__ __volatile__( + "tas.b @%1\n\t" + "movt %0\n\t" + "xor #1,%0" +: "=z"(_res) +: "r"(lock) +: "t","memory"); + return (int) _res; +} + +#endif /* __sh__ */ /* These live in s_lock.c, but only for gcc */ -- 1.5.4.4
Nobuhiro Iwamatsu <iwamatsu@nigauri.org> writes: > +#if defined(__sh__) /* Renesas SuperH */ Do they have any longer form of that macro? This one seems dangerously likely to trigger on unrelated systems. regards, tom lane
Nobuhiro Iwamatsu <iwamatsu@nigauri.org> writes: > + __asm__ __volatile__( > + "tas.b @%1\n\t" > + "movt %0\n\t" > + "xor #1,%0" > +: "=z"(_res) > +: "r"(lock) > +: "t","memory"); Another question: this asm declaration ignores the advice given at lines 89-107 of s_lock.h, both cosmetic and substantive. Why? Are you entirely certain it's right, and not subject to optimization problems in versions of gcc other than whatever you tested? regards, tom lane
I wrote: > Nobuhiro Iwamatsu <iwamatsu@nigauri.org> writes: >> +#if defined(__sh__) /* Renesas SuperH */ > Do they have any longer form of that macro? I looked into the gcc sources, and the answer seems to be "no" :-(. So we're stuck with __sh__. I'm still pretty skeptical about the adequacy of the asm parameters, though. regards, tom lane
Where are we on this? --------------------------------------------------------------------------- Tom Lane wrote: > I wrote: > > Nobuhiro Iwamatsu <iwamatsu@nigauri.org> writes: > >> +#if defined(__sh__) /* Renesas SuperH */ > > > Do they have any longer form of that macro? > > I looked into the gcc sources, and the answer seems to be "no" :-(. > So we're stuck with __sh__. > > I'm still pretty skeptical about the adequacy of the asm parameters, > though. > > regards, tom lane > > -- > Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-patches -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + If your life is a hard drive, Christ can be your backup. +