From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 27 Aug 2005 16:22:48 +0000 (+0000)
Subject: Get the MIPS assembler syntax right.  Also add a separate sync command;
X-Git-Tag: REL8_1_0BETA2~94
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5824d02155e68180bd2237946a33b29dbef1dd51;p=postgresql

Get the MIPS assembler syntax right.  Also add a separate sync command;
the reference I consulted yesterday said SC does a SYNC, but apparently
this is not true on newer MIPS processors, so be safe.
---

diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index 3951aa7137..75b15a334e 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -66,7 +66,7 @@
  * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *	  $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.137 2005/08/26 22:04:42 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.138 2005/08/27 16:22:48 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -455,6 +455,7 @@ do \
 
 #if defined(__mips__) && !defined(__sgi)
 /* Note: on SGI we use the OS' mutex ABI, see below */
+/* Note: R10000 processors require a separate SYNC */
 #define HAS_TEST_AND_SET
 
 typedef unsigned int slock_t;
@@ -474,11 +475,12 @@ tas(volatile slock_t *lock)
 		"       .set noreorder      \n"
 		"       .set nomacro        \n"
 		"       ll      %0, %2      \n"
-		"       or      %1, %0, $1  \n"
+		"       or      %1, %0, 1   \n"
 		"       sc      %1, %2      \n"
-		"       xori    %1, $1      \n"
+		"       xori    %1, 1       \n"
 		"       or      %0, %0, %1  \n"
-		"1:     .set pop              "
+		"       sync                \n"
+		"       .set pop              "
 :		"=&r" (_res), "=&r" (_tmp), "+R" (*_l)
 :
 :		"memory");