diff options
author | Marc G. Fournier <scrappy@hub.org> | 1997-06-06 01:37:23 +0000 |
---|---|---|
committer | Marc G. Fournier <scrappy@hub.org> | 1997-06-06 01:37:23 +0000 |
commit | 15da18508f115a2b35c38201605ce747026f7339 (patch) | |
tree | 6b2f0d4c120e73986d1f54b8e39af12cb23888c6 | |
parent | 355d6a276714670a633fa23b8ba1eec78967a35b (diff) | |
download | postgresql-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.c | 38 | ||||
-rw-r--r-- | src/include/port/BSD44_derived.h | 3 |
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 */ |