[PATCHv2 00/24] ILP32 Support in ARM64

From: Andrew Pinski
Date: Sat May 24 2014 - 03:02:17 EST


New version of the patches with documentation, signal changes are simplified, using less compat syscalls and splitting up the patches so it is easier to review. I have tested LTP on both LP64 and ILP32. There is a few LTP failures but they are due to LTP being incorrect (sigaction structure in glibc is not the one which is used by the kernel) I have not yet tested LTP for AARCH32 but I have done simple testing of AARCH32 so an executable still runs. Each patch has been tested seperately though ILP32 won't fully work until the last patch has been added.

Thanks,
Andrew Pinski

Andrew Pinski (24):
ARM64: Force LP64 to compile the kernel.
ARM64: Rename COMPAT to AARCH32_EL0 in Kconfig.
ARM64: Change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0
instead.
ARM64:ILP32: Set kernel_long to long long so we can reuse most of the
same syscalls as LP64.
ARM64:UAPI: Set the correct __BITS_PER_LONG for ILP32.
Allow for some signal structures to be the same between a 32bit ABI
and the 64bit ABI.
ARM64:ILP32: Use the same size and layout of the signal structures
for ILP32 as for LP64.
Allow a 32bit ABI to use the naming of the 64bit ABI syscalls to
avoid confusion of not splitting the registers.
ARM64:ILP32: Use the same syscall names as LP64.
ARM64: Introduce is_a32_task and is_a32_thread. Use them in the
correct locations.
ARM64: Add ARM64_ILP32 to Kconfig.
ARM64: Add is_ilp32_compat_task and is_ilp32_compat_thread and
TIF_32BIT_AARCH64.
Drivers:input: Use is_compat_task for ARM64 also.
ARM64:ILP32: COMPAT_USE_64BIT_TIME is true for ILP32 tasks.
ARM64:ILP32: Use the non compat HWCAP for ILP32.
ARM64:ILP32 use the standard start_thread for ILP32 so the processor
state is not AARCH32.
ARM64:ILP32: Support core dump for ILP32.
ARM64: Add loading of ILP32 binaries.
ARM64: Add vdso for ILP32 and use it for the signal return.
ptrace: Allow compat to use the native siginfo.
ARM64:ILP32: The native siginfo is used instead of the compat
siginfo.
ARM64:ILP32: Use a seperate syscall table as a few syscalls need to
be using the compat syscalls.
ARM64:ILP32: Fix signal return for ILP32 when the user modified the
signal stack.
Add documentation about ARM64 ILP32 ABI.

Documentation/arm64/ilp32.txt | 57 ++++++++
arch/arm64/Kconfig | 15 ++-
arch/arm64/Makefile | 4 +
arch/arm64/include/asm/Kbuild | 1 -
arch/arm64/include/asm/arch_timer.h | 2 +-
arch/arm64/include/asm/compat.h | 65 +++++++++-
arch/arm64/include/asm/elf.h | 101 +++++++++++++--
arch/arm64/include/asm/fpsimd.h | 2 +-
arch/arm64/include/asm/hwcap.h | 12 ++-
arch/arm64/include/asm/memory.h | 2 +-
arch/arm64/include/asm/processor.h | 11 ++-
arch/arm64/include/asm/ptrace.h | 2 +-
arch/arm64/include/asm/signal32.h | 2 +
arch/arm64/include/asm/stat.h | 2 +
arch/arm64/include/asm/syscalls.h | 4 +
arch/arm64/include/asm/thread_info.h | 3 +-
arch/arm64/include/asm/unistd.h | 6 +-
arch/arm64/include/asm/vdso.h | 4 +
arch/arm64/include/uapi/asm/bitsperlong.h | 7 +-
arch/arm64/include/uapi/asm/posix_types.h | 12 ++
arch/arm64/include/uapi/asm/siginfo.h | 21 +++
arch/arm64/include/uapi/asm/signal.h | 32 +++++
arch/arm64/include/uapi/asm/unistd.h | 7 +
arch/arm64/kernel/Makefile | 8 +-
arch/arm64/kernel/asm-offsets.c | 2 +-
arch/arm64/kernel/entry.S | 19 ++-
arch/arm64/kernel/head.S | 2 +-
arch/arm64/kernel/hw_breakpoint.c | 6 +-
arch/arm64/kernel/process.c | 6 +-
arch/arm64/kernel/ptrace.c | 51 +++++---
arch/arm64/kernel/signal.c | 33 +++++-
arch/arm64/kernel/sys_ilp32.c | 175 +++++++++++++++++++++++++
arch/arm64/kernel/traps.c | 4 +-
arch/arm64/kernel/vdso-ilp32/.gitignore | 2 +
arch/arm64/kernel/vdso-ilp32/Makefile | 72 ++++++++++
arch/arm64/kernel/vdso-ilp32/vdso-ilp32.S | 33 +++++
arch/arm64/kernel/vdso-ilp32/vdso-ilp32.lds.S | 100 ++++++++++++++
arch/arm64/kernel/vdso.c | 59 +++++++--
drivers/input/input-compat.h | 2 +-
include/linux/compat.h | 4 +
include/uapi/asm-generic/siginfo.h | 17 ++-
include/uapi/asm-generic/signal.h | 27 ++++-
include/uapi/asm-generic/unistd.h | 5 +-
kernel/ptrace.c | 24 +++-
44 files changed, 935 insertions(+), 90 deletions(-)
create mode 100644 Documentation/arm64/ilp32.txt
create mode 100644 arch/arm64/include/uapi/asm/posix_types.h
create mode 100644 arch/arm64/kernel/sys_ilp32.c
create mode 100644 arch/arm64/kernel/vdso-ilp32/.gitignore
create mode 100644 arch/arm64/kernel/vdso-ilp32/Makefile
create mode 100644 arch/arm64/kernel/vdso-ilp32/vdso-ilp32.S
create mode 100644 arch/arm64/kernel/vdso-ilp32/vdso-ilp32.lds.S

--
1.7.2.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/