arm64: ILP32 user-kernel ABI specification

The aim of this patch is to define the user-kernel ABI for ILP32 tasks
running on the AArch64 Linux kernel.

Requirements for ILP32 ABI:
- asm-generic/unistd.h for syscall numbers, same as the AArch64
- __kernel_(u)long_t and defined as '(unsigned) long long' for ILP32 so
  that size_t and other types become 64-bit wide.
- _utime/_stime in siginfo are of type __kernel_si_clock_t which is
- Compat layer is used for syscalls that share pointers in data
  structures with the kernel.

Drawbacks of using the compat layer:
- ELF_PLATFORM is reported as "v8l" as for compat tasks rather than

Signed-off-by: Catalin Marinas <>
11 files changed