Re: [PATCH 11/27] [AARCH64] Syscalls for ILP32 are passed always via 64bit values.

From: Catalin Marinas
Date: Wed Jun 22 2016 - 11:51:58 EST


On Tue, Jun 21, 2016 at 08:06:55AM +0300, Yury Norov wrote:
> This patch adds support for ILP32 syscalls, sign and zero extending
> where needed. Unlike LP64, pointers are 32bit and need to be zero
> extended rather than the standard sign extend that the code would do.
> We take advatage of ssize_t being long rather than int for ILP32,
> to get this correct.

Unless I misunderstand what this patch does, I thought we agreed that
32-bit arguments are passed as 32-bit values and it is the kernel's
responsibility to zero or sign-extend the upper half (IOW, assume
garbage just like the PCS ABI).

We are still debating whether 64-bit values are passed in one or two
registers but this doesn't change the situation of 32-bit values like
pointers.

--
Catalin