[PATCH] sh: Add support Renesas SuperH

Started by Nobuhiro Iwamatsuover 18 years ago5 messagespatches
Jump to latest
#1Nobuhiro Iwamatsu
iwamatsu@nigauri.org

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Nobuhiro Iwamatsu (#1)
Re: [PATCH] sh: Add support Renesas SuperH

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

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Nobuhiro Iwamatsu (#1)
Re: [PATCH] sh: Add support Renesas SuperH

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

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#2)
Re: [PATCH] sh: Add support Renesas SuperH

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

#5Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#4)
Re: [PATCH] sh: Add support Renesas SuperH

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. +