On Sun, Mar 25, 2018 at 5:47 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > Linus, Dominik - how do you plan dealing with that fun? Secretly, I was hoping to kill x32, because it's not being used afaik. More realistically, I was thinking we'd just use a separate table or system calls, and generate different versions. In fact, you can see exactly that in my WIP branch, except it uses the wrong name. So see the "WIP-syscall" branch in my normal git kernel repo, and in particular the patch to <linux/syscalls.h>, which generates "sys_x64##name" and "sys_i86##name()" inline functions that do that mapping correcty for native x86-64, and for the (misnamed) x32 cases. So there are three different cases: - native: sys_x64_name() generated by SYSCALL_DEFINEx() - compat -bit: compat_sys_i86_name() generated by COMPAT_SYSCALL_DEFINEx() - x32: sys_i86_name() generated by SYSCALL_DEFINEx(). and then I actually changed the names in the tables (ie in arch/x86/entry/syscalls/syscall_64.tbl etc). HOWEVER. I didn't actually test any of the compat or x32 ones, and the way I did it there also was no type-checking or other automated catching of getting it wrong. So it's almost certainly completely buggy, but the _intent_ is there and there is a remote possibility that it might even work. Linus