... > He's already doing the system call emulation for all the system > calls other than ioctl in user space though. In my experience, > there are actually fairly few ioctl commands that are different > between architectures -- most of them have no misaligned > or architecture-defined struct members at all.
Aren't there also some intractable issues with socket options? IIRC the kernel code that tried to change them to 64bit was horribly broken in some obscure cases. Pushing the conversion down the stack not only identified the issues, it also made them easier to fix. If you change the kernel so a 64bit process can execute 32bit system calls then a lot of the problems do go away. This is probably easiest done by setting a high bit on the system call number - as x86_64 does for x32 calls. You still have to solve the different alignment of 64bit data on i386. Of course the system call numbers are different - but that is just a lookup. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)