Hi Maciej,
On Mon, Dec 10, 2018 at 11:32:46PM +0000, Maciej W. Rozycki wrote:
On Mon, 10 Dec 2018, Paul Burton wrote:
And I realise that undoing that but keeping n64 in our own filenames & macros is another type of inconsistency, but something imperfect is unavoidable at this point given that the engineers way back when decided to use "ABI64" for n64.
My feeling has been n32 was invented at SGI as an afterthought, hence the choice of having ABI32 or ABI64 defined for the 32-bit (now o32) and the 64-bit (now n64) ABI respectively was reasonable.
I'd agree if _MIPS_SIM were defined as _ABI32 for o32, but:
$ mips-linux-gcc -mabi=32 -dM -E - </dev/null | grep ABIO32 #define _ABIO32 1 #define _MIPS_SIM _ABIO32
...so _MIPS_SIM is:
_ABIO32 for o32 _ABIN32 for n32 _ABI64 for n64
That doesn't seem very consistent to me, and means that there inevitably has to be some ugliness once there are multiple 64-bit ABIs.
To me it feels like the result of someone thinking "one 64-bit MIPS ABI ought to be enough for anybody". I'm undecided whether that person was shortsighted or a genius whose vision was simply incomprehensible to those of us that followed.
Thanks, Paul