riscv: compat: Add COMPAT Kbuild skeletal support
authorGuo Ren <guoren@linux.alibaba.com>
Tue, 5 Apr 2022 07:13:14 +0000 (15:13 +0800)
committerPalmer Dabbelt <palmer@rivosinc.com>
Tue, 17 May 2022 23:37:23 +0000 (16:37 -0700)
Adds initial skeletal COMPAT Kbuild (Running 32bit U-mode on
64bit S-mode) support.
 - Setup kconfig & dummy functions for compiling.
 - Implement compat_start_thread by the way.

Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Tested-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20220405071314.3225832-21-guoren@kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/Kconfig

index 00fd9c548f2631c6fc537f3e3dfdd28780c3e82a..def9798e96759ad02f7e1a5d9d3917c7b8e87c6f 100644 (file)
@@ -76,6 +76,7 @@ config RISCV
        select HAVE_ARCH_KGDB if !XIP_KERNEL
        select HAVE_ARCH_KGDB_QXFER_PKT
        select HAVE_ARCH_MMAP_RND_BITS if MMU
+       select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
        select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_ARCH_TRACEHOOK
        select HAVE_ARCH_TRANSPARENT_HUGEPAGE if 64BIT && MMU
@@ -127,12 +128,18 @@ config ARCH_MMAP_RND_BITS_MIN
        default 18 if 64BIT
        default 8
 
+config ARCH_MMAP_RND_COMPAT_BITS_MIN
+       default 8
+
 # max bits determined by the following formula:
 #  VA_BITS - PAGE_SHIFT - 3
 config ARCH_MMAP_RND_BITS_MAX
        default 24 if 64BIT # SV39 based
        default 17
 
+config ARCH_MMAP_RND_COMPAT_BITS_MAX
+       default 17
+
 # set if we run in machine mode, cleared if we run in supervisor mode
 config RISCV_M_MODE
        bool
@@ -394,6 +401,18 @@ config CRASH_DUMP
 
          For more details see Documentation/admin-guide/kdump/kdump.rst
 
+config COMPAT
+       bool "Kernel support for 32-bit U-mode"
+       default 64BIT
+       depends on 64BIT && MMU
+       help
+         This option enables support for a 32-bit U-mode running under a 64-bit
+         kernel at S-mode. riscv32-specific components such as system calls,
+         the user helper functions (vdso), signal rt_frame functions and the
+         ptrace interface are handled appropriately by the kernel.
+
+         If you want to execute 32-bit userspace applications, say Y.
+
 endmenu
 
 menu "Boot options"