From 731ea8076f0c7d46496f95d227a2102c83ed5438 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Fri, 2 Oct 1998 15:23:08 +0000
Subject: [PATCH] Here's the new diff for getting the NS32K assembly code into
 the spin-locks.  Notice that it's now inline assembler in s_lock.h, rather
 than seperate code in s_lock.c.  It also shrank a little bit...  Just rip out
 the S_LOCK() define and insert the tas() inline function.  Please let me know
 if there are any problems with it.

Jon Buller
---
 src/include/storage/s_lock.h | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index eb9a808f099..b094ed8fb8d 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.51 1998/10/01 01:53:50 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/include/storage/s_lock.h,v 1.52 1998/10/02 15:23:08 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -168,6 +168,22 @@ tas(volatile slock_t *lock)
 
 
 
+#if defined(NEED_NS32K_TAS_ASM)
+#define TAS(lock) tas(lock)
+
+static __inline__ int
+tas(volatile slock_t *lock)
+{
+  register _res;
+  __asm__("sbitb 0, %0
+	sfsd %1"
+	: "=m"(*lock), "=r"(_res));
+  return (int) _res; 
+}
+
+#endif  /* NEED_NS32K_TAS_ASM */
+
+
 
 #else							/* __GNUC__ */
 /***************************************************************************
@@ -212,24 +228,6 @@ tas(slock_t *s_lock)
 
 #endif	 /* NEED_I386_TAS_ASM */
 
-
-
-#if defined(NEED_NS32K_TAS_ASM)
-
-#define S_LOCK(lock)				\
-{						\
-	slock_t res = 1;				\
-	while (res) {				\
-	  __asm__("movqd 0, r0");			\
-	  __asm__("sbitd r0, %0" : "=m"(*lock));	\
-	  __asm__("sprb us, %0" : "=r" (res));	\
-	  res = ((res >> 5) & 1);			\
-	}						\
-}
-
-#endif	 /* NEED_NS32K_TAS_ASM */
-
-
 #endif	 /* defined(__GNUC__) */
 
 
-- 
GitLab