On 2/22/2017 4:16 PM, Joseph Myers wrote:
That said, I think the following ABIs use 64-bit register size in userspace while being ILP32 ABIs. You'll need to examine the code more closely in each case to determine what size time_t is, and to what extent if any 64-bit registers are involved in the syscall ABI. There may be other cases where 64-bit registers can in fact be used for what's normally considered a 32-bit ABI (e.g. people have done some work on being able to use 64-bit registers for 32-bit powerpc code, although the registers are 32-bit for all purposes in the function-calling ABI).
AArch64 ILP32 (not yet in glibc) MIPS n32 TileGX32 x86_64 x32
TILE-Gx ILP32 mode uses only the low 32 bits of registers for all syscalls. It uses the full 64-bit register size for "long long" and the ABI generally permits passing and returning such values in a single register; we just don't ever do that with the kernel ABI.