[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/4] default-configs: Support o32 ABI with 64-bit MIPS CPUs
From: |
Fredrik Noring |
Subject: |
Re: [PATCH 3/4] default-configs: Support o32 ABI with 64-bit MIPS CPUs |
Date: |
Sat, 12 Dec 2020 18:03:49 +0100 |
On Thu, Nov 19, 2020 at 04:45:29PM +0000, Maciej W. Rozycki wrote:
> On Thu, 19 Nov 2020, Philippe Mathieu-Daudé wrote:
>
> > MIPS o32 ABI on 64-bit CPUs looks like a ILP32-on-64bit data
> > model, allowing 64-bit arithmetic and data movement instructions.
> >
> > This is the default ABI used by the "Sony Linux Toolkit for
> > Playstation 2".
>
> Please don't, not at least with a generic configuration (i.e. make it
> unambiguous that this is R5900-specific). This only works with R5900
> because it does not implement the MIPS ISA correctly (e.g. see what $ra is
> set to with JAL/JALR/etc. in the kernel mode), and it is not supported by
> the standard Linux ABI. Use n32 instead, which has the same functionality
> and is standard (and is also a better ABI in terms of performance).
>
> You'd probably need to implement all the R5900 addressing quirks for your
> proposed hack to match hardware, or otherwise you'll end up with emulation
> that creates its own reality.
I agree. Modern Linux kernel and GCC are important too. It seems both o32
and n32, with quirks, are generally accepted, but R5900 MMIs and other
special features are less clear:
For example, given the fact that the 128-bit MMIs are unconditionally
executable on R5900 hardware, a user may be forgiven to believe that they
always work. But unless the Linux kernel restores 128-bit registers in its
operating mode switches, which could be o32, there will be silent data
corruption (and ensuing frustration).
(For this reason I favour full register restores in all operating modes.)
Fredrik