linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv2 00/24] ILP32 Support in ARM64
@ 2014-05-24  7:01 Andrew Pinski
  2014-05-24  7:01 ` [PATCH 01/24] ARM64: Force LP64 to compile the kernel Andrew Pinski
                   ` (24 more replies)
  0 siblings, 25 replies; 50+ messages in thread
From: Andrew Pinski @ 2014-05-24  7:01 UTC (permalink / raw)
  To: linux-arm-kernel

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

^ permalink raw reply	[flat|nested] 50+ messages in thread
* [PATCHv3 00/24] ILP32 support in ARM64
@ 2014-09-03 21:18 Andrew Pinski
  2014-09-03 21:19 ` [PATCH 06/24] Allow for some signal structures to be the same between a 32bit ABI and the 64bit ABI Andrew Pinski
  0 siblings, 1 reply; 50+ messages in thread
From: Andrew Pinski @ 2014-09-03 21:18 UTC (permalink / raw)
  To: linux-arm-kernel

New version with all of the requested changes.  Updated to the latest sources.

Notable changes from the previous versions:
VDSO code has been factored out to be easier to understand and easier to maintain.
Move the config option to the last thing that gets added.
Added some extra COMPAT_* macros for core dumping for easier usage.


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/is_a32_thread and TIF_AARCH32 and use
    them in the correct locations
  ARM64: Add is_ilp32_compat_task and is_ilp32_compat_thread
  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
  compat_binfmt_elf: coredump: Allow some core dump macros be
    overridden for compat.
  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
  ARM64: Add ARM64_ILP32 to Kconfig
  Add documentation about ARM64 ILP32 ABI

 Documentation/arm64/ilp32.txt                 |   57 +++++++
 arch/arm64/Kconfig                            |   15 ++-
 arch/arm64/Makefile                           |    4 +
 arch/arm64/include/asm/arch_timer.h           |    2 +-
 arch/arm64/include/asm/compat.h               |   59 ++++++++
 arch/arm64/include/asm/elf.h                  |  100 ++++++++++++-
 arch/arm64/include/asm/fpsimd.h               |    2 +-
 arch/arm64/include/asm/hwcap.h                |    2 -
 arch/arm64/include/asm/processor.h            |   11 ++
 arch/arm64/include/asm/ptrace.h               |    2 +-
 arch/arm64/include/asm/signal32.h             |    4 +-
 arch/arm64/include/asm/stat.h                 |    4 +-
 arch/arm64/include/asm/syscalls.h             |    4 +
 arch/arm64/include/asm/thread_info.h          |    1 +
 arch/arm64/include/asm/unistd.h               |    6 +-
 arch/arm64/include/asm/vdso.h                 |    4 +
 arch/arm64/include/uapi/asm/bitsperlong.h     |    9 +-
 arch/arm64/include/uapi/asm/posix_types.h     |    8 +-
 arch/arm64/include/uapi/asm/siginfo.h         |   33 ++++
 arch/arm64/include/uapi/asm/signal.h          |   34 +++++
 arch/arm64/include/uapi/asm/unistd.h          |    6 +
 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             |    7 +-
 arch/arm64/kernel/process.c                   |    6 +-
 arch/arm64/kernel/ptrace.c                    |   52 +++++--
 arch/arm64/kernel/signal.c                    |   38 +++++-
 arch/arm64/kernel/sys_ilp32.c                 |  195 +++++++++++++++++++++++++
 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 |   98 +++++++++++++
 arch/arm64/kernel/vdso.c                      |   74 ++++++++--
 fs/compat_binfmt_elf.c                        |   17 ++
 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             |    6 +-
 kernel/ptrace.c                               |   25 +++-
 42 files changed, 989 insertions(+), 86 deletions(-)
 create mode 100644 Documentation/arm64/ilp32.txt
 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

^ permalink raw reply	[flat|nested] 50+ messages in thread

end of thread, other threads:[~2014-09-03 21:19 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-24  7:01 [PATCHv2 00/24] ILP32 Support in ARM64 Andrew Pinski
2014-05-24  7:01 ` [PATCH 01/24] ARM64: Force LP64 to compile the kernel Andrew Pinski
2014-05-24  7:01 ` [PATCH 02/24] ARM64: Rename COMPAT to AARCH32_EL0 in Kconfig Andrew Pinski
2014-05-24  7:01 ` [PATCH 03/24] ARM64: Change some CONFIG_COMPAT over to use CONFIG_AARCH32_EL0 instead Andrew Pinski
2014-06-17 15:15   ` Catalin Marinas
2014-05-24  7:01 ` [PATCH 04/24] ARM64:ILP32: Set kernel_long to long long so we can reuse most of the same syscalls as LP64 Andrew Pinski
2014-05-24  7:02 ` [PATCH 05/24] ARM64:UAPI: Set the correct __BITS_PER_LONG for ILP32 Andrew Pinski
2014-06-17 15:22   ` Catalin Marinas
2014-06-17 15:29     ` Arnd Bergmann
2014-05-24  7:02 ` [PATCH 06/24] Allow for some signal structures to be the same between a 32bit ABI and the 64bit ABI Andrew Pinski
2014-06-17 15:43   ` Catalin Marinas
2014-05-24  7:02 ` [PATCH 07/24] ARM64:ILP32: Use the same size and layout of the signal structures for ILP32 as for LP64 Andrew Pinski
2014-06-17 15:58   ` Catalin Marinas
2014-05-24  7:02 ` [PATCH 08/24] Allow a 32bit ABI to use the naming of the 64bit ABI syscalls to avoid confusion of not splitting the registers Andrew Pinski
2014-06-17 16:22   ` Catalin Marinas
2014-05-24  7:02 ` [PATCH 09/24] ARM64:ILP32: Use the same syscall names as LP64 Andrew Pinski
2014-06-18  8:51   ` Catalin Marinas
2014-05-24  7:02 ` [PATCH 10/24] ARM64: Introduce is_a32_task and is_a32_thread. Use them in the correct locations Andrew Pinski
2014-06-18 17:47   ` Catalin Marinas
2014-05-24  7:02 ` [PATCH 11/24] ARM64: Add ARM64_ILP32 to Kconfig Andrew Pinski
2014-05-24  7:02 ` [PATCH 12/24] ARM64: Add is_ilp32_compat_task and is_ilp32_compat_thread and TIF_32BIT_AARCH64 Andrew Pinski
2014-06-19 12:49   ` Catalin Marinas
2014-05-24  7:02 ` [PATCH 13/24] Drivers:input: Use is_compat_task for ARM64 also Andrew Pinski
2014-06-19 12:50   ` Catalin Marinas
2014-05-24  7:02 ` [PATCH 14/24] ARM64:ILP32: COMPAT_USE_64BIT_TIME is true for ILP32 tasks Andrew Pinski
2014-06-19 12:52   ` Catalin Marinas
2014-05-24  7:02 ` [PATCH 15/24] ARM64:ILP32: Use the non compat HWCAP for ILP32 Andrew Pinski
2014-06-19 12:54   ` Catalin Marinas
2014-07-01 13:01   ` Dr. Philipp Tomsich
2014-05-24  7:02 ` [PATCH 16/24] ARM64:ILP32 use the standard start_thread for ILP32 so the processor state is not AARCH32 Andrew Pinski
2014-05-24  7:02 ` [PATCH 17/24] ARM64:ILP32: Support core dump for ILP32 Andrew Pinski
2014-05-24  7:02 ` [PATCH 18/24] ARM64: Add loading of ILP32 binaries Andrew Pinski
2014-05-24  7:02 ` [PATCH 19/24] ARM64: Add vdso for ILP32 and use it for the signal return Andrew Pinski
2014-05-24  7:02 ` [PATCH 20/24] ptrace: Allow compat to use the native siginfo Andrew Pinski
2014-05-24  7:02 ` [PATCH 21/24] ARM64:ILP32: The native siginfo is used instead of the compat siginfo Andrew Pinski
2014-05-24 18:56   ` H. Peter Anvin
2014-05-24  7:02 ` [PATCH 22/24] ARM64:ILP32: Use a seperate syscall table as a few syscalls need to be using the compat syscalls Andrew Pinski
2014-07-01 15:05   ` Catalin Marinas
2014-07-01 15:30     ` Pinski, Andrew
2014-07-01 16:38       ` Arnd Bergmann
2014-07-01 16:50         ` Catalin Marinas
2014-07-01 17:04           ` Arnd Bergmann
2014-07-01 16:49       ` Catalin Marinas
2014-05-24  7:02 ` [PATCH 23/24] ARM64:ILP32: Fix signal return for ILP32 when the user modified the signal stack Andrew Pinski
2014-05-24  7:02 ` [PATCH 24/24] Add documentation about ARM64 ILP32 ABI Andrew Pinski
2014-06-16 17:08 ` [PATCHv2 00/24] ILP32 Support in ARM64 Catalin Marinas
2014-06-16 17:19   ` Pinski, Andrew
2014-06-17 10:43     ` Catalin Marinas
2014-06-17 11:30       ` Pinski, Andrew
  -- strict thread matches above, loose matches on Subject: below --
2014-09-03 21:18 [PATCHv3 00/24] ILP32 support " Andrew Pinski
2014-09-03 21:19 ` [PATCH 06/24] Allow for some signal structures to be the same between a 32bit ABI and the 64bit ABI Andrew Pinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).