aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc G. Fournier <scrappy@hub.org>1997-06-06 01:37:23 +0000
committerMarc G. Fournier <scrappy@hub.org>1997-06-06 01:37:23 +0000
commit15da18508f115a2b35c38201605ce747026f7339 (patch)
tree6b2f0d4c120e73986d1f54b8e39af12cb23888c6
parent355d6a276714670a633fa23b8ba1eec78967a35b (diff)
downloadpostgresql-15da18508f115a2b35c38201605ce747026f7339.tar.gz
postgresql-15da18508f115a2b35c38201605ce747026f7339.zip
From: Phil Nelson <phil@cs.wwu.edu>
Subject: [PATCHES] Added support for NetBSD/pc532.
-rw-r--r--src/backend/storage/ipc/s_lock.c38
-rw-r--r--src/include/port/BSD44_derived.h3
2 files changed, 40 insertions, 1 deletions
diff --git a/src/backend/storage/ipc/s_lock.c b/src/backend/storage/ipc/s_lock.c
index 75dd8dcc83a..449b34d12c7 100644
--- a/src/backend/storage/ipc/s_lock.c
+++ b/src/backend/storage/ipc/s_lock.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/s_lock.c,v 1.13 1997/04/24 02:35:35 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/ipc/Attic/s_lock.c,v 1.14 1997/06/06 01:37:14 scrappy Exp $
*
*-------------------------------------------------------------------------
*/
@@ -486,4 +486,40 @@ S_INIT_LOCK(slock_t *lock)
#endif /* defined(linux) && defined(sparc) */
+#if defined(NEED_NS32K_TAS_ASM)
+
+int
+tas(slock_t *m)
+{
+ slock_t res = 0;
+ __asm__("movd 8(fp), r1");
+ __asm__("movqd 0, r0");
+ __asm__("sbitd r0, 0(r1)");
+ __asm__("sprb us, %0" : "=r" (res));
+ res = (res >> 5) & 1;
+ return res;
+}
+
+void
+S_LOCK(slock_t *lock)
+{
+ while (tas(lock))
+ ;
+}
+
+void
+S_UNLOCK(slock_t *lock)
+{
+ *lock = 0;
+}
+
+void
+S_INIT_LOCK(slock_t *lock)
+{
+ S_UNLOCK(lock);
+}
+
+#endif /* NEED_NS32K_TAS_ASM */
+
+
#endif /* HAS_TEST_AND_SET */
diff --git a/src/include/port/BSD44_derived.h b/src/include/port/BSD44_derived.h
index 4d11f20e90b..e89c0094170 100644
--- a/src/include/port/BSD44_derived.h
+++ b/src/include/port/BSD44_derived.h
@@ -5,6 +5,9 @@
# if defined(sparc)
# define NEED_SPARC_TAS_ASM
# endif
+# if defined(ns32k)
+# define NEED_NS32k_TAS_ASM
+# endif
# define HAS_TEST_AND_SET
# if defined(__mips__)
/* # undef HAS_TEST_AND_SET */