This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 11/27] [AARCH64] Syscalls for ILP32 are passed always via 64bit values.
- From: Catalin Marinas <catalin dot marinas at arm dot com>
- To: Yury Norov <ynorov at caviumnetworks dot com>
- Cc: libc-alpha at sourceware dot org, linux-kernel at vger dot kernel dot org, arnd at arndb dot de, marcus dot shawcroft at arm dot com, philb at gnu dot org, davem at davemloft dot net, szabolcs dot nagy at arm dot com, maxim dot kuvyrkov at linaro dot org, joseph at codesourcery dot com, pinskia at gmail dot com, Andrew Pinski <apinski at cavium dot com>
- Date: Wed, 22 Jun 2016 16:49:52 +0100
- Subject: Re: [PATCH 11/27] [AARCH64] Syscalls for ILP32 are passed always via 64bit values.
- Authentication-results: sourceware.org; auth=none
- References: <1466485631-3532-1-git-send-email-ynorov at caviumnetworks dot com> <1466485631-3532-13-git-send-email-ynorov at caviumnetworks dot com>
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