BUG #15844: MIPS: remove .set mips2 in s_lock.h to fix r6 build

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: wzssyqa(at)gmail(dot)com
Subject: BUG #15844: MIPS: remove .set mips2 in s_lock.h to fix r6 build
Date: 2019-06-11 04:39:35
Message-ID: 15844-8f62fe7e163939b3@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 15844
Logged by: Yunqiang Su
Email address: wzssyqa(at)gmail(dot)com
PostgreSQL version: 12beta1
Operating system: Linux
Description:

MIPS r6 changes the encoding of LL/SC instruction,
while the .set mips2 will force assembler to generate
old encoding.

This patch can fix this problem.

In fact if we not willing to support MIPS I or any CPU without ll/sc
at all, we can just remove .set mips2 here.

Index: postgresql-11-11.2/src/include/storage/s_lock.h
===================================================================
--- postgresql-11-11.2.orig/src/include/storage/s_lock.h
+++ postgresql-11-11.2/src/include/storage/s_lock.h
@@ -606,6 +606,13 @@ typedef unsigned int slock_t;

#define TAS(lock) tas(lock)

+
+#if __mips_isa_rev >= 6
+# define MIPS_SET_VER " \n"
+#else
+# define MIPS_SET_VER ".set mips2 \n"
+#endif
+
static __inline__ int
tas(volatile slock_t *lock)
{
@@ -615,7 +622,7 @@ tas(volatile slock_t *lock)

__asm__ __volatile__(
" .set push \n"
- " .set mips2 \n"
+ MIPS_SET_VER
" .set noreorder \n"
" .set nomacro \n"
" ll %0, %2 \n"
@@ -637,7 +644,7 @@ do \
{ \
__asm__ __volatile__( \
" .set push \n" \
- " .set mips2 \n" \
+ MIPS_SET_VER \
" .set noreorder \n" \
" .set nomacro \n" \
" sync \n" \

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Michael Paquier 2019-06-11 04:55:39 Re: BUG #15833: defining a comment on a domain constraint fails with wrong OID
Previous Message PG Bug reporting form 2019-06-11 02:54:32 BUG #15843: Postgresql11 installation fails on Fedora 29