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

YunQiang Su <wzssyqa@gmail.com>

From: YunQiang Su <wzssyqa@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2019-06-16T01:46:08Z
Lists: pgsql-bugs
Tom Lane <tgl@sss.pgh.pa.us> 于2019年6月13日周四 下午10:07写道:
>
> PG Bug reporting form <noreply@postgresql.org> writes:
> > 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.
>
> So I have a bunch of questions about this patch.
>
> 1. What problem is this actually solving?  We have what I think are
> reasonably modern MIPS machines in the buildfarm (frogfish,
> topminnow) and they aren't complaining.
>

Yes. The MIPS r6 is quite new, and the machine that you have should be pre-r6.

> 2. What toolchains define __mips_isa_rev at all?  Seems like we could
> be trading one portability issue for another one.
>

It is defined by gcc/llvm.
For gcc:
https://github.com/gcc-mirror/gcc/blob/41d6b10e96a1de98e90a7c0378437c3255814b16/gcc/config/mips/mips.h#L527

> 3. If we actually need something here, don't we need a run-time probe
> rather than a compile-time check?  Distro packagers, for example,
> can't assume that their packages will be run on exactly the hardware
> they build on.

We don't think run-time probe is a good idea, since we treat r6 as a
new architectures.
It has it own port of OS, like Debian.
Runtime probe make none sense here.

>
>                         regards, tom lane



-- 
YunQiang Su



Commits

  1. Fix spinlock assembly code for MIPS so it works on MIPS r6.