lkml.org 
[lkml]   [2018]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v9 00/24] ILP32 for ARM64
    Date
    This series enables AARCH64 with ILP32 mode.

    As supporting work, it introduces ARCH_32BIT_OFF_T configuration
    option that is enabled for existing 32-bit architectures but disabled
    for new arches (so 64-bit off_t userspace type is used by new userspace).
    Also it deprecates getrlimit and setrlimit syscalls prior to prlimit64.

    Based on kernel v4.16. Tested with LTP, glibc testsuite, trinity, lmbench,
    CPUSpec.

    This series on github:
    https://github.com/norov/linux/tree/ilp32-4.16
    Linaro toolchain:
    http://snapshots.linaro.org/components/toolchain/binaries/7.3-2018.04-rc1/aarch64-linux-gnu_ilp32/
    Debian repo:
    http://people.linaro.org/~wookey/ilp32/
    OpenSUSE repo:
    https://build.opensuse.org/project/show/devel:ARM:Factory:Contrib:ILP32

    Changes:
    v3: https://lkml.org/lkml/2014/9/3/704
    v4: https://lkml.org/lkml/2015/4/13/691
    v5: https://lkml.org/lkml/2015/9/29/911
    v6: https://lkml.org/lkml/2016/5/23/661
    v7: https://lkml.org/lkml/2017/1/9/213
    v8: https://lkml.org/lkml/2017/6/19/624
    v9: - rebased on top of v4.16;
    - signal subsystem reworked to avoid code duplication, as requested
    by Dave Martin (patches 18 and 20);
    - new files introduced in series use SPDX notation for license;
    - linux-api and linux-arch CCed as the series changes kernel ABI;
    - checkpatch and other minor fixes.
    - Zhou Chengming's reported-by for patch 2 and signed-off-by for
    patch 21 removed because his email became invalid. Zhou, please
    share your new email.

    Andrew Pinski (4):
    arm64: rename COMPAT to AARCH32_EL0 in Kconfig
    arm64:uapi: set __BITS_PER_LONG correctly for ILP32 and LP64
    arm64: ilp32: add sys_ilp32.c and a separate table (in entry.S) to use
    it
    arm64:ilp32: add ARM64_ILP32 to Kconfig

    Catalin Marinas (1):
    arm64: ilp32: Make the Kconfig option default y

    Dave Martin (1):
    arm64: signal: Make parse_user_sigframe() independent of rt_sigframe
    layout

    James Morse (1):
    ptrace: Add compat PTRACE_{G,S}ETSIGMASK handlers

    Philipp Tomsich (1):
    arm64:ilp32: add vdso-ilp32 and use for signal return

    Yury Norov (16):
    compat ABI: use non-compat openat and open_by_handle_at variants
    32-bit userspace ABI: introduce ARCH_32BIT_OFF_T config option
    asm-generic: Drop getrlimit and setrlimit syscalls from default list
    thread: move thread bits accessors to separated file
    arm64: ilp32: add documentation on the ILP32 ABI for ARM64
    arm64: rename functions that reference compat term
    arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat)
    arm64: ilp32: add is_ilp32_compat_{task,thread} and TIF_32BIT_AARCH64
    arm64: introduce binfmt_elf32.c
    arm64: change compat_elf_hwcap and compat_elf_hwcap2 prefix to a32
    arm64: ilp32: introduce binfmt_ilp32.c
    arm64: ilp32: share aarch32 syscall handlers
    arm64: signal: share lp64 signal structures and routines to ilp32
    arm64: signal32: move ilp32 and aarch32 common code to separated file
    arm64: ilp32: introduce ilp32-specific sigframe and ucontext
    arm64: ptrace: handle ptrace_request differently for aarch32 and ilp32

    Documentation/arm64/ilp32.txt | 45 +++
    arch/Kconfig | 15 +
    arch/arc/Kconfig | 1 +
    arch/arc/include/uapi/asm/unistd.h | 1 +
    arch/arm/Kconfig | 1 +
    arch/arm64/Kconfig | 18 +-
    arch/arm64/Makefile | 3 +
    arch/arm64/include/asm/compat.h | 19 +-
    arch/arm64/include/asm/elf.h | 36 +-
    arch/arm64/include/asm/fpsimd.h | 2 +-
    arch/arm64/include/asm/ftrace.h | 2 +-
    arch/arm64/include/asm/hwcap.h | 8 +-
    arch/arm64/include/asm/is_compat.h | 78 ++++
    arch/arm64/include/asm/processor.h | 15 +-
    arch/arm64/include/asm/ptrace.h | 12 +-
    arch/arm64/include/asm/seccomp.h | 2 +-
    arch/arm64/include/asm/signal32.h | 19 +-
    arch/arm64/include/asm/signal32_common.h | 13 +
    arch/arm64/include/asm/signal_common.h | 306 +++++++++++++++
    arch/arm64/include/asm/signal_ilp32.h | 23 ++
    arch/arm64/include/asm/syscall.h | 2 +-
    arch/arm64/include/asm/thread_info.h | 4 +-
    arch/arm64/include/asm/unistd.h | 6 +-
    arch/arm64/include/asm/vdso.h | 6 +
    arch/arm64/include/uapi/asm/bitsperlong.h | 9 +-
    arch/arm64/include/uapi/asm/unistd.h | 13 +
    arch/arm64/kernel/Makefile | 8 +-
    arch/arm64/kernel/armv8_deprecated.c | 6 +-
    arch/arm64/kernel/asm-offsets.c | 9 +-
    arch/arm64/kernel/binfmt_elf32.c | 35 ++
    arch/arm64/kernel/binfmt_ilp32.c | 87 +++++
    arch/arm64/kernel/cpufeature.c | 28 +-
    arch/arm64/kernel/cpuinfo.c | 18 +-
    arch/arm64/kernel/debug-monitors.c | 4 +-
    arch/arm64/kernel/entry.S | 37 +-
    arch/arm64/kernel/entry32.S | 80 ----
    arch/arm64/kernel/entry32_common.S | 97 +++++
    arch/arm64/kernel/entry_ilp32.S | 12 +
    arch/arm64/kernel/head.S | 2 +-
    arch/arm64/kernel/hw_breakpoint.c | 8 +-
    arch/arm64/kernel/perf_callchain.c | 28 +-
    arch/arm64/kernel/perf_regs.c | 4 +-
    arch/arm64/kernel/process.c | 11 +-
    arch/arm64/kernel/ptrace.c | 36 +-
    arch/arm64/kernel/signal.c | 352 +++---------------
    arch/arm64/kernel/signal32.c | 111 +++---
    arch/arm64/kernel/signal32_common.c | 37 ++
    arch/arm64/kernel/signal_ilp32.c | 65 ++++
    arch/arm64/kernel/sys_compat.c | 10 +-
    arch/arm64/kernel/sys_ilp32.c | 90 +++++
    arch/arm64/kernel/traps.c | 11 +-
    arch/arm64/kernel/vdso-ilp32/.gitignore | 2 +
    arch/arm64/kernel/vdso-ilp32/Makefile | 82 ++++
    arch/arm64/kernel/vdso-ilp32/vdso-ilp32.S | 22 ++
    arch/arm64/kernel/vdso-ilp32/vdso-ilp32.lds.S | 84 +++++
    arch/arm64/kernel/vdso.c | 65 +++-
    arch/arm64/kernel/vdso/gettimeofday.S | 20 +-
    arch/arm64/kernel/vdso/vdso.S | 6 +-
    arch/arm64/mm/mmap.c | 2 +-
    arch/blackfin/Kconfig | 1 +
    arch/c6x/include/uapi/asm/unistd.h | 1 +
    arch/cris/Kconfig | 1 +
    arch/frv/Kconfig | 1 +
    arch/h8300/Kconfig | 1 +
    arch/h8300/include/uapi/asm/unistd.h | 1 +
    arch/hexagon/Kconfig | 1 +
    arch/hexagon/include/uapi/asm/unistd.h | 1 +
    arch/m32r/Kconfig | 1 +
    arch/m68k/Kconfig | 1 +
    arch/metag/Kconfig | 1 +
    arch/metag/include/uapi/asm/unistd.h | 1 +
    arch/microblaze/Kconfig | 1 +
    arch/mips/Kconfig | 1 +
    arch/mn10300/Kconfig | 1 +
    arch/nios2/Kconfig | 1 +
    arch/nios2/include/uapi/asm/unistd.h | 1 +
    arch/openrisc/Kconfig | 1 +
    arch/openrisc/include/uapi/asm/unistd.h | 1 +
    arch/parisc/Kconfig | 1 +
    arch/powerpc/Kconfig | 1 +
    arch/score/Kconfig | 1 +
    arch/score/include/uapi/asm/unistd.h | 1 +
    arch/sh/Kconfig | 1 +
    arch/sparc/Kconfig | 1 +
    arch/tile/Kconfig | 1 +
    arch/tile/include/uapi/asm/unistd.h | 1 +
    arch/tile/kernel/compat.c | 3 +
    arch/unicore32/Kconfig | 1 +
    arch/unicore32/include/uapi/asm/unistd.h | 1 +
    arch/x86/Kconfig | 1 +
    arch/x86/um/Kconfig | 1 +
    arch/xtensa/Kconfig | 1 +
    drivers/clocksource/arm_arch_timer.c | 4 +-
    include/linux/fcntl.h | 2 +-
    include/linux/sched.h | 1 +
    include/linux/thread_bits.h | 76 ++++
    include/linux/thread_info.h | 64 +---
    include/uapi/asm-generic/unistd.h | 10 +-
    kernel/ptrace.c | 48 ++-
    scripts/checksyscalls.sh | 5 +
    100 files changed, 1675 insertions(+), 698 deletions(-)
    create mode 100644 Documentation/arm64/ilp32.txt
    create mode 100644 arch/arm64/include/asm/is_compat.h
    create mode 100644 arch/arm64/include/asm/signal32_common.h
    create mode 100644 arch/arm64/include/asm/signal_common.h
    create mode 100644 arch/arm64/include/asm/signal_ilp32.h
    create mode 100644 arch/arm64/kernel/binfmt_elf32.c
    create mode 100644 arch/arm64/kernel/binfmt_ilp32.c
    create mode 100644 arch/arm64/kernel/entry32_common.S
    create mode 100644 arch/arm64/kernel/entry_ilp32.S
    create mode 100644 arch/arm64/kernel/signal32_common.c
    create mode 100644 arch/arm64/kernel/signal_ilp32.c
    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
    create mode 100644 include/linux/thread_bits.h

    --
    2.17.0

    \
     
     \ /
      Last update: 2018-05-16 10:30    [W:5.540 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site