RFC: A new MIPS64 ABI
David Daney
ddaney@caviumnetworks.com
Tue Feb 15 18:08:00 GMT 2011
On 02/15/2011 09:56 AM, Alexandre Oliva wrote:
> On Feb 14, 2011, David Daney<ddaney@caviumnetworks.com> wrote:
>
>> Current MIPS 32-bit ABIs (both o32 and n32) are restricted to 2GB of
>> user virtual memory space. This is due the way MIPS32 memory space is
>> segmented. Only the range from 0..2^31-1 is available. Pointer
>> values are always sign extended.
>
>> The proposed new ABI would only be available on MIPS64 platforms. It
>> would be identical to the current MIPS n32 ABI *except* that pointers
>> would be zero-extended rather than sign-extended when resident in
>> registers.
>
> FTR, I don't really know why my Yeeloong is limited to 31-bit addresses,
> and I kind of hoped an n32 userland would improve that WRT o32, without
> wasting memory with longer pointers like n64 would.
>
> So, sorry if this is a dumb question, but wouldn't it be much easier to
> keep on using sign-extended addresses, and just make sure the kernel
> never allocates a virtual memory range that crosses a sign-bit change,
> or whatever other reason there is for addresses to be limited to the
> positive 2GB range in n32?
>
No, it is not possible. The MIPS (and MIPS64) hardware architecture
does not allow userspace access to addresses with the high bit (two bits
for mips64) set.
Your complaint is a good summary of why I am thinking about n32-big.
David Daney
More information about the Binutils
mailing list