Linux/mips compile: [Fwd: Bug#139003: a little bit more is needed...] - Mailing list pgsql-hackers

From Oliver Elphick
Subject Linux/mips compile: [Fwd: Bug#139003: a little bit more is needed...]
Date
Msg-id 1017222365.1228.274.camel@linda
Whole thread Raw
Responses Re: Linux/mips compile: [Fwd: Bug#139003: a little bit more  (Bruce Momjian <pgman@candle.pha.pa.us>)
Re: Linux/mips compile: [Fwd: Bug#139003: a little bit more  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
-----Forwarded Message-----

From: rmurray@debian.org
To: 139003@bugs.debian.org
Cc: control@bugs.debian.org
Subject: Bug#139003: a little bit more is needed...
Date: 27 Mar 2002 00:21:18 -0800

reopen 139003
thanks

Looks like a small patch is needed as well to do the right thing on Linux.

The patch enables the mips2 ISA for the ll/sc operations, and then restores
it when done.  The kernel/libc emulation code will take over on CPUs without
ll/sc, and on CPUs with it, it'll use the operations provided by the CPU.

Combined with the earlier fix (removing -mips2), postgresql builds again on
mips and mipsel.  The patch is against 7.2-7.

diff -urN postgresql-7.2/src/backend/storage/lmgr/s_lock.c postgresql-7.2.fixed/src/backend/storage/lmgr/s_lock.c
--- postgresql-7.2/src/backend/storage/lmgr/s_lock.c    Mon Nov  5 18:46:28 2001
+++ postgresql-7.2.fixed/src/backend/storage/lmgr/s_lock.c    Wed Mar 27 07:46:59 2002
@@ -173,9 +173,12 @@.global    tas                        \n\tas:                            \n\            .frame
$sp,0, $31    \n\ 
+            .set push        \n\
+            .set mips2        \n\n            ll        $14, 0($4)    \n\            or        $15, $14, 1    \n\
     sc        $15, 0($4)    \n\ 
+            .set pop            \n\            beq        $15, 0, fail\n\            bne        $14, 0, fail\n\
   li        $2, 0        \n\ 



pgsql-hackers by date:

Previous
From: "Christopher Kings-Lynne"
Date:
Subject: Re: contrib/tree/README.tree
Next
From: Alex Hayward
Date:
Subject: Re: initdb dies during IpcSemaphoreCreate under BSD jail