On Feb 12, 2011, at 7:02 PM, Andrew Pinski wrote: > On Sat, Feb 12, 2011 at 3:04 PM, H. Peter Anvin <h...@zytor.com> wrote: >> On 02/12/2011 01:10 PM, Florian Weimer wrote: >>> Why is the ia32 compatiblity kernel interface used? >> >> Because there is no way in hell we're designing in a second >> compatibility ABI in the kernel (and it has to be a compatibility ABI, >> because of the pointer size difference.) > > I think he is asking why not create a new ABI layer for the kernel > like it is done for n32 for MIPS.
The kernel syscall ABI needs to be able to be pass 64-bit quantities in a single register (since that's what the calling ABI is capable of doing but I don't think the ia32 kernel interface can do)? Maybe it's me, but I expected X32 to be the X86-64 ABI with 32-bit longs and pointers (converted to 64-bit arguments when passed in register or on the stack). That allows the same syscall argument marshalling that currently exists but just need a different set of syscall vectors.