RISC-V: Add support for rv32 userspace via COMPAT
authorPalmer Dabbelt <palmer@rivosinc.com>
Thu, 19 May 2022 16:51:59 +0000 (09:51 -0700)
committerPalmer Dabbelt <palmer@rivosinc.com>
Thu, 19 May 2022 16:51:59 +0000 (09:51 -0700)
commit7eb6369d7acfe87df73848b3757c648e8f352b86
tree393d357d93b5f4ff37fc633b270e0fded795f721
parent93c0651617a62a69717299f1464dda798af8bebb
parent9be8459298eadb39b9fe9974b890239e9c123107
RISC-V: Add support for rv32 userspace via COMPAT

The RISC-V port supports the rv32i and rv64i base ISAs, but provides no
mechanism to run 32-bit userspace on 64-bit systems.  This adds that
support, via the COMPAT framework.  As the RISC-V ISAs (and uABIs) were
developed concurrently, the resulting compat support is mostly generic.

This includes a handful of cleanups to the generic compat infrastructure
to more cleanly support RISC-V, followed by the RISC-V implementation.

* palmer/riscv-compat:
  riscv: compat: Add COMPAT Kbuild skeletal support
  riscv: compat: ptrace: Add compat_arch_ptrace implement
  riscv: compat: signal: Add rt_frame implementation
  riscv: compat: vdso: Add setup additional pages implementation
  riscv: compat: vdso: Add COMPAT_VDSO base code implementation
  riscv: compat: Add hw capability check for elf
  riscv: compat: Add elf.h implementation
  riscv: compat: process: Add UXL_32 support in start_thread
  riscv: compat: syscall: Add entry.S implementation
  riscv: compat: syscall: Add compat_sys_call_table implementation
  riscv: compat: Support TASK_SIZE for compat mode
  riscv: compat: Add basic compat data type implementation
  riscv: Fixup difference with defconfig
  syscalls: compat: Fix the missing part for __SYSCALL_COMPAT
  asm-generic: compat: Cleanup duplicate definitions
  fs: stat: compat: Add __ARCH_WANT_COMPAT_STAT
  arch: Add SYSVIPC_COMPAT for all architectures
  compat: consolidate the compat_flock{,64} definition
  uapi: always define F_GETLK64/F_SETLK64/F_SETLKW64 in fcntl.h
  uapi: simplify __ARCH_FLOCK{,64}_PAD a little
arch/riscv/Kconfig
arch/riscv/Makefile
arch/riscv/include/asm/pgtable.h
arch/riscv/kernel/Makefile