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