From: guoren@kernel.org
To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com,
tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de,
apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org,
paul.walmsley@sifive.com, anup@brainfault.org,
jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com,
U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn,
kito.cheng@sifive.com, andy.chiu@sifive.com,
vincent.chen@sifive.com, greentime.hu@sifive.com,
wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org,
fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-riscv@lists.infradead.org,
Guo Ren <guoren@linux.alibaba.com>
Subject: [RFC PATCH V2 04/38] riscv: u64ilp32: Introduce ILP32 vdso for UXL=64
Date: Sun, 12 Nov 2023 01:14:40 -0500 [thread overview]
Message-ID: <20231112061514.2306187-5-guoren@kernel.org> (raw)
In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org>
From: Guo Ren <guoren@linux.alibaba.com>
This is the first patch to introduce ILP32 abi for RV64. Here is the
diagram:
+--------------------------------+------------+
| +-------------------+--------+ | +--------+ |
| | (compat)|(compat)| | | | |
| |u64lp64 u64ilp32|u32ilp32| | |u32ilp32| | ABI
| | ^^^^^^^^| | | | | |
| +-------------------+--------+ | +--------+ |
| +-------------------+--------+ | +--------+ |
| | UXL=64 | UXL=32 | | | UXL=32 | | ISA
| +-------------------+--------+ | +--------+ |
+--------------------------------+------------+-------
| +----------------------------+ | +--------+ |
| | 64BIT | | | 32BIT| | Kernel
| | s64lp64 | | |s32ilp32| | ABI
| +----------------------------+ | +--------+ |
| +----------------------------+ | +--------+ |
| | SXL=64 | | | SXL=32 | | ISA
| +----------------------------+ | +--------+ |
+--------------------------------+------------+
The 64ilp32 userspace needs another virtual dynamic shared object
independent from vdso32(32ilp32) and vdso64(64ilp32).
Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
---
arch/riscv/Kconfig | 5 ++
arch/riscv/Makefile | 4 ++
arch/riscv/kernel/Makefile | 1 +
arch/riscv/kernel/vdso/Makefile | 59 +++++++++++++++++++
.../kernel/vdso/gen_vdso64ilp32_offsets.sh | 5 ++
arch/riscv/kernel/vdso64ilp32.S | 8 +++
6 files changed, 82 insertions(+)
create mode 100755 arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh
create mode 100644 arch/riscv/kernel/vdso64ilp32.S
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 24b1b6abf0a7..5d770b8e2756 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -288,6 +288,10 @@ config VDSO64
bool
depends on MMU
+config VDSO64ILP32
+ bool
+ depends on MMU
+
source "arch/riscv/Kconfig.socs"
source "arch/riscv/Kconfig.errata"
@@ -707,6 +711,7 @@ config COMPAT
bool "Kernel support for 32-bit U-mode"
default 64BIT
select VDSO32
+ select VDSO64ILP32 if $(cc-option,-march=rv64g -mabi=ilp32)
depends on 64BIT && MMU
help
This option enables support for a 32-bit U-mode running under a 64-bit
diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
index 3b7d5ebf3c78..8605050bddd0 100644
--- a/arch/riscv/Makefile
+++ b/arch/riscv/Makefile
@@ -140,6 +140,8 @@ vdso_install:
$(build)=arch/riscv/kernel/vdso vdso32_install
$(if $(CONFIG_VDSO64),$(Q)$(MAKE) \
$(build)=arch/riscv/kernel/vdso vdso64_install
+ $(if $(CONFIG_VDSO64ILP32),$(Q)$(MAKE) \
+ $(build)=arch/riscv/kernel/vdso vdso64ilp32_install
ifeq ($(KBUILD_EXTMOD),)
ifeq ($(CONFIG_MMU),y)
@@ -149,6 +151,8 @@ vdso_prepare: prepare0
$(build)=arch/riscv/kernel/vdso include/generated/vdso32-offsets.h)
$(if $(CONFIG_VDSO64),$(Q)$(MAKE) \
$(build)=arch/riscv/kernel/vdso include/generated/vdso64-offsets.h)
+ $(if $(CONFIG_VDSO64ILP32),$(Q)$(MAKE) \
+ $(build)=arch/riscv/kernel/vdso include/generated/vdso64ilp32-offsets.h)
endif
endif
diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile
index 23032ac7f51d..a4583a29b28b 100644
--- a/arch/riscv/kernel/Makefile
+++ b/arch/riscv/kernel/Makefile
@@ -59,6 +59,7 @@ obj-y += probes/
obj-$(CONFIG_MMU) += vdso.o vdso/
obj-$(CONFIG_VDSO64) += vdso64.o
obj-$(CONFIG_VDSO32) += vdso32.o
+obj-$(CONFIG_VDSO64ILP32) += vdso64ilp32.o
obj-$(CONFIG_RISCV_M_MODE) += traps_misaligned.o
obj-$(CONFIG_FPU) += fpu.o
diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile
index df8f68bb0937..629989b1ad05 100644
--- a/arch/riscv/kernel/vdso/Makefile
+++ b/arch/riscv/kernel/vdso/Makefile
@@ -148,3 +148,62 @@ vdso32.so: $(obj)/vdso32.so.dbg
vdso32_install: vdso32.so
endif
+
+ifdef CONFIG_VDSO64ILP32
+VDSO64ILP32_CC_FLAGS := -march=rv64g -mabi=ilp32
+VDSO64ILP32_LD_FLAGS := -melf32lriscv
+
+obj-as-vdso64ilp32 = $(patsubst %, %-64ilp32.o, $(vdso-as-syms)) note-64ilp32.o
+obj-as-vdso64ilp32 := $(addprefix $(obj)/, $(obj-as-vdso64ilp32))
+
+obj-cc-vdso64ilp32 = $(patsubst %, %-64ilp32.o, $(vdso-cc-syms))
+obj-cc-vdso64ilp32 := $(addprefix $(obj)/, $(obj-cc-vdso64ilp32))
+
+targets += $(obj-as-vdso64ilp32) $(obj-cc-vdso64ilp32) vdso64ilp32.so vdso64ilp32.so.dbg vdso64ilp32.lds
+
+$(obj)/vdso64ilp32.so.dbg: $(obj)/vdso.lds $(obj-as-vdso64ilp32) $(obj-cc-vdso64ilp32) FORCE
+ $(call if_changed,vdso64ilp32ld)
+LDFLAGS_vdso64ilp32.so.dbg = -shared -S -soname=linux-vdso64ilp32.so.1 \
+ --build-id=sha1 --hash-style=both --eh-frame-hdr
+
+# The DSO images are built using a special linker script
+# Make sure only to export the intended __vdso_xxx symbol offsets.
+quiet_cmd_vdso64ilp32ld = VDSO64ILP32LD $@
+ cmd_vdso64ilp32ld = $(VDSO_LD) $(ld_flags) $(VDSO64ILP32_LD_FLAGS) -T $(filter-out FORCE,$^) -o $@.tmp && \
+ $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso-as-syms) $(vdso-cc-syms)) $@.tmp $@ && \
+ rm $@.tmp
+
+# actual build commands
+quiet_cmd_vdso64ilp32as = VDSO64ILP32AS $@
+ cmd_vdso64ilp32as = $(VDSO_CC) $(a_flags) $(VDSO64ILP32_CC_FLAGS) -c -o $@ $<
+quiet_cmd_vdso64ilp32cc = VDSO64ILP32CC $@
+ cmd_vdso64ilp32cc = $(VDSO_CC) $(c_flags) $(VDSO64ILP32_CC_FLAGS) -c -o $@ $<
+
+# Force dependency
+$(obj)/vdso64ilp32.o: $(obj)/vdso64ilp32.so
+
+$(obj-as-vdso64ilp32): %-64ilp32.o: %.S FORCE
+ $(call if_changed_dep,vdso64ilp32as)
+$(obj-cc-vdso64ilp32): %-64ilp32.o: %.c FORCE
+ $(call if_changed_dep,vdso64ilp32cc)
+
+CFLAGS_hwprobe-64ilp32.o += -fPIC
+
+CFLAGS_vgettimeofday-64ilp32.o += -fPIC -include $(c-gettimeofday-y)
+# Disable -pg to prevent insert call site
+CFLAGS_REMOVE_vgettimeofday-64ilp32.o = $(CC_FLAGS_FTRACE)
+
+# Generate VDSO offsets using helper script
+gen-vdso64ilp32sym := $(srctree)/$(src)/gen_vdso64ilp32_offsets.sh
+quiet_cmd_vdso64ilp32sym = VDSO64ILP32SYM $@
+ cmd_vdso64ilp32sym = $(NM) $< | $(gen-vdso64ilp32sym) | LC_ALL=C sort > $@
+
+include/generated/vdso64ilp32-offsets.h: $(obj)/vdso64ilp32.so.dbg $(obj)/vdso64ilp32.so FORCE
+ $(call if_changed,vdso64ilp32sym)
+
+vdso64ilp32.so: $(obj)/vdso64ilp32.so.dbg
+ @mkdir -p $(MODLIB)/vdso
+ $(call cmd,vdso_install)
+
+vdso64ilp32_install: vdso64ilp32.so
+endif
diff --git a/arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh b/arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh
new file mode 100755
index 000000000000..6af2db7a26ad
--- /dev/null
+++ b/arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+LC_ALL=C
+sed -n -e 's/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define rv64ilp32\2_offset\t0x\1/p'
diff --git a/arch/riscv/kernel/vdso64ilp32.S b/arch/riscv/kernel/vdso64ilp32.S
new file mode 100644
index 000000000000..5b658da1eeef
--- /dev/null
+++ b/arch/riscv/kernel/vdso64ilp32.S
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#define vdso64_start vdso64ilp32_start
+#define vdso64_end vdso64ilp32_end
+
+#define __VDSO_PATH "arch/riscv/kernel/vdso/vdso64ilp32.so"
+
+#include "vdso64.S"
--
2.36.1
WARNING: multiple messages have this Message-ID (diff)
From: guoren@kernel.org
To: arnd@arndb.de, guoren@kernel.org, palmer@rivosinc.com,
tglx@linutronix.de, conor.dooley@microchip.com, heiko@sntech.de,
apatel@ventanamicro.com, atishp@atishpatra.org, bjorn@kernel.org,
paul.walmsley@sifive.com, anup@brainfault.org,
jiawei@iscas.ac.cn, liweiwei@iscas.ac.cn, wefu@redhat.com,
U2FsdGVkX1@gmail.com, wangjunqiang@iscas.ac.cn,
kito.cheng@sifive.com, andy.chiu@sifive.com,
vincent.chen@sifive.com, greentime.hu@sifive.com,
wuwei2016@iscas.ac.cn, jrtc27@jrtc27.com, luto@kernel.org,
fweimer@redhat.com, catalin.marinas@arm.com, hjl.tools@gmail.com
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-riscv@lists.infradead.org,
Guo Ren <guoren@linux.alibaba.com>
Subject: [RFC PATCH V2 04/38] riscv: u64ilp32: Introduce ILP32 vdso for UXL=64
Date: Sun, 12 Nov 2023 01:14:40 -0500 [thread overview]
Message-ID: <20231112061514.2306187-5-guoren@kernel.org> (raw)
In-Reply-To: <20231112061514.2306187-1-guoren@kernel.org>
From: Guo Ren <guoren@linux.alibaba.com>
This is the first patch to introduce ILP32 abi for RV64. Here is the
diagram:
+--------------------------------+------------+
| +-------------------+--------+ | +--------+ |
| | (compat)|(compat)| | | | |
| |u64lp64 u64ilp32|u32ilp32| | |u32ilp32| | ABI
| | ^^^^^^^^| | | | | |
| +-------------------+--------+ | +--------+ |
| +-------------------+--------+ | +--------+ |
| | UXL=64 | UXL=32 | | | UXL=32 | | ISA
| +-------------------+--------+ | +--------+ |
+--------------------------------+------------+-------
| +----------------------------+ | +--------+ |
| | 64BIT | | | 32BIT| | Kernel
| | s64lp64 | | |s32ilp32| | ABI
| +----------------------------+ | +--------+ |
| +----------------------------+ | +--------+ |
| | SXL=64 | | | SXL=32 | | ISA
| +----------------------------+ | +--------+ |
+--------------------------------+------------+
The 64ilp32 userspace needs another virtual dynamic shared object
independent from vdso32(32ilp32) and vdso64(64ilp32).
Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Signed-off-by: Guo Ren <guoren@kernel.org>
---
arch/riscv/Kconfig | 5 ++
arch/riscv/Makefile | 4 ++
arch/riscv/kernel/Makefile | 1 +
arch/riscv/kernel/vdso/Makefile | 59 +++++++++++++++++++
.../kernel/vdso/gen_vdso64ilp32_offsets.sh | 5 ++
arch/riscv/kernel/vdso64ilp32.S | 8 +++
6 files changed, 82 insertions(+)
create mode 100755 arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh
create mode 100644 arch/riscv/kernel/vdso64ilp32.S
diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 24b1b6abf0a7..5d770b8e2756 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -288,6 +288,10 @@ config VDSO64
bool
depends on MMU
+config VDSO64ILP32
+ bool
+ depends on MMU
+
source "arch/riscv/Kconfig.socs"
source "arch/riscv/Kconfig.errata"
@@ -707,6 +711,7 @@ config COMPAT
bool "Kernel support for 32-bit U-mode"
default 64BIT
select VDSO32
+ select VDSO64ILP32 if $(cc-option,-march=rv64g -mabi=ilp32)
depends on 64BIT && MMU
help
This option enables support for a 32-bit U-mode running under a 64-bit
diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile
index 3b7d5ebf3c78..8605050bddd0 100644
--- a/arch/riscv/Makefile
+++ b/arch/riscv/Makefile
@@ -140,6 +140,8 @@ vdso_install:
$(build)=arch/riscv/kernel/vdso vdso32_install
$(if $(CONFIG_VDSO64),$(Q)$(MAKE) \
$(build)=arch/riscv/kernel/vdso vdso64_install
+ $(if $(CONFIG_VDSO64ILP32),$(Q)$(MAKE) \
+ $(build)=arch/riscv/kernel/vdso vdso64ilp32_install
ifeq ($(KBUILD_EXTMOD),)
ifeq ($(CONFIG_MMU),y)
@@ -149,6 +151,8 @@ vdso_prepare: prepare0
$(build)=arch/riscv/kernel/vdso include/generated/vdso32-offsets.h)
$(if $(CONFIG_VDSO64),$(Q)$(MAKE) \
$(build)=arch/riscv/kernel/vdso include/generated/vdso64-offsets.h)
+ $(if $(CONFIG_VDSO64ILP32),$(Q)$(MAKE) \
+ $(build)=arch/riscv/kernel/vdso include/generated/vdso64ilp32-offsets.h)
endif
endif
diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile
index 23032ac7f51d..a4583a29b28b 100644
--- a/arch/riscv/kernel/Makefile
+++ b/arch/riscv/kernel/Makefile
@@ -59,6 +59,7 @@ obj-y += probes/
obj-$(CONFIG_MMU) += vdso.o vdso/
obj-$(CONFIG_VDSO64) += vdso64.o
obj-$(CONFIG_VDSO32) += vdso32.o
+obj-$(CONFIG_VDSO64ILP32) += vdso64ilp32.o
obj-$(CONFIG_RISCV_M_MODE) += traps_misaligned.o
obj-$(CONFIG_FPU) += fpu.o
diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile
index df8f68bb0937..629989b1ad05 100644
--- a/arch/riscv/kernel/vdso/Makefile
+++ b/arch/riscv/kernel/vdso/Makefile
@@ -148,3 +148,62 @@ vdso32.so: $(obj)/vdso32.so.dbg
vdso32_install: vdso32.so
endif
+
+ifdef CONFIG_VDSO64ILP32
+VDSO64ILP32_CC_FLAGS := -march=rv64g -mabi=ilp32
+VDSO64ILP32_LD_FLAGS := -melf32lriscv
+
+obj-as-vdso64ilp32 = $(patsubst %, %-64ilp32.o, $(vdso-as-syms)) note-64ilp32.o
+obj-as-vdso64ilp32 := $(addprefix $(obj)/, $(obj-as-vdso64ilp32))
+
+obj-cc-vdso64ilp32 = $(patsubst %, %-64ilp32.o, $(vdso-cc-syms))
+obj-cc-vdso64ilp32 := $(addprefix $(obj)/, $(obj-cc-vdso64ilp32))
+
+targets += $(obj-as-vdso64ilp32) $(obj-cc-vdso64ilp32) vdso64ilp32.so vdso64ilp32.so.dbg vdso64ilp32.lds
+
+$(obj)/vdso64ilp32.so.dbg: $(obj)/vdso.lds $(obj-as-vdso64ilp32) $(obj-cc-vdso64ilp32) FORCE
+ $(call if_changed,vdso64ilp32ld)
+LDFLAGS_vdso64ilp32.so.dbg = -shared -S -soname=linux-vdso64ilp32.so.1 \
+ --build-id=sha1 --hash-style=both --eh-frame-hdr
+
+# The DSO images are built using a special linker script
+# Make sure only to export the intended __vdso_xxx symbol offsets.
+quiet_cmd_vdso64ilp32ld = VDSO64ILP32LD $@
+ cmd_vdso64ilp32ld = $(VDSO_LD) $(ld_flags) $(VDSO64ILP32_LD_FLAGS) -T $(filter-out FORCE,$^) -o $@.tmp && \
+ $(OBJCOPY) $(patsubst %, -G __vdso_%, $(vdso-as-syms) $(vdso-cc-syms)) $@.tmp $@ && \
+ rm $@.tmp
+
+# actual build commands
+quiet_cmd_vdso64ilp32as = VDSO64ILP32AS $@
+ cmd_vdso64ilp32as = $(VDSO_CC) $(a_flags) $(VDSO64ILP32_CC_FLAGS) -c -o $@ $<
+quiet_cmd_vdso64ilp32cc = VDSO64ILP32CC $@
+ cmd_vdso64ilp32cc = $(VDSO_CC) $(c_flags) $(VDSO64ILP32_CC_FLAGS) -c -o $@ $<
+
+# Force dependency
+$(obj)/vdso64ilp32.o: $(obj)/vdso64ilp32.so
+
+$(obj-as-vdso64ilp32): %-64ilp32.o: %.S FORCE
+ $(call if_changed_dep,vdso64ilp32as)
+$(obj-cc-vdso64ilp32): %-64ilp32.o: %.c FORCE
+ $(call if_changed_dep,vdso64ilp32cc)
+
+CFLAGS_hwprobe-64ilp32.o += -fPIC
+
+CFLAGS_vgettimeofday-64ilp32.o += -fPIC -include $(c-gettimeofday-y)
+# Disable -pg to prevent insert call site
+CFLAGS_REMOVE_vgettimeofday-64ilp32.o = $(CC_FLAGS_FTRACE)
+
+# Generate VDSO offsets using helper script
+gen-vdso64ilp32sym := $(srctree)/$(src)/gen_vdso64ilp32_offsets.sh
+quiet_cmd_vdso64ilp32sym = VDSO64ILP32SYM $@
+ cmd_vdso64ilp32sym = $(NM) $< | $(gen-vdso64ilp32sym) | LC_ALL=C sort > $@
+
+include/generated/vdso64ilp32-offsets.h: $(obj)/vdso64ilp32.so.dbg $(obj)/vdso64ilp32.so FORCE
+ $(call if_changed,vdso64ilp32sym)
+
+vdso64ilp32.so: $(obj)/vdso64ilp32.so.dbg
+ @mkdir -p $(MODLIB)/vdso
+ $(call cmd,vdso_install)
+
+vdso64ilp32_install: vdso64ilp32.so
+endif
diff --git a/arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh b/arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh
new file mode 100755
index 000000000000..6af2db7a26ad
--- /dev/null
+++ b/arch/riscv/kernel/vdso/gen_vdso64ilp32_offsets.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+LC_ALL=C
+sed -n -e 's/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define rv64ilp32\2_offset\t0x\1/p'
diff --git a/arch/riscv/kernel/vdso64ilp32.S b/arch/riscv/kernel/vdso64ilp32.S
new file mode 100644
index 000000000000..5b658da1eeef
--- /dev/null
+++ b/arch/riscv/kernel/vdso64ilp32.S
@@ -0,0 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#define vdso64_start vdso64ilp32_start
+#define vdso64_end vdso64ilp32_end
+
+#define __VDSO_PATH "arch/riscv/kernel/vdso/vdso64ilp32.so"
+
+#include "vdso64.S"
--
2.36.1
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2023-11-12 6:15 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-12 6:14 [RFC PATCH V2 00/38] rv64ilp32: Running ILP32 on RV64 ISA guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 01/38] riscv: u64ilp32: Unify vdso32 & compat_vdso into vdso/Makefile guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 02/38] riscv: u64ilp32: Remove compat_vdso/ guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 03/38] riscv: u64ilp32: Add time-related vDSO common flow for vdso32 guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` guoren [this message]
2023-11-12 6:14 ` [RFC PATCH V2 04/38] riscv: u64ilp32: Introduce ILP32 vdso for UXL=64 guoren
2023-11-12 6:14 ` [RFC PATCH V2 05/38] riscv: u64ilp32: Adjust vDSO kernel flow for 64ilp32 abi guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 06/38] riscv: u64ilp32: Add signal support for compat guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 07/38] riscv: u64ilp32: Add ptrace interface support guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 08/38] riscv: u64ilp32: Adjust vDSO alternative for 64ilp32 abi guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 09/38] riscv: u64ilp32: Add xlen_t in user_regs_struct guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 10/38] riscv: u64ilp32: Remove the restriction of UXL=32 guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 11/38] riscv: u64ilp32: Enable user space runtime switch guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 12/38] riscv: s64ilp32: Unify ULL & UL into UXL in csr guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 13/38] riscv: s64ilp32: Introduce xlen_t for 64ILP32 kernel guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 14/38] riscv: s64ilp32: Add sbi support guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 15/38] riscv: s64ilp32: Add asid support guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 16/38] riscv: s64ilp32: Introduce PTR_L and PTR_S guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 17/38] riscv: s64ilp32: Adjust TASK_SIZE for s64ilp32 kernel guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 18/38] riscv: s64ilp32: Add ebpf jit support guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 19/38] riscv: s64ilp32: Add ELF32 support guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 20/38] riscv: s64ilp32: Add ARCH_RV64ILP32 Kconfig option guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 21/38] riscv: s64ilp32: Add MMU_SV32 mode support guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 22/38] riscv: s64ilp32: Add MMU_SV39 " guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:14 ` [RFC PATCH V2 23/38] riscv: s64ilp32: Enable native atomic64 guoren
2023-11-12 6:14 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 24/38] riscv: s64ilp32: Add TImode (128 int) support guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 25/38] riscv: s64ilp32: Implement cmpxchg_double guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 26/38] riscv: s64ilp32: Disable KVM guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 27/38] riscv: s64ilp32: Correct the rv64ilp32 stackframe layout guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 28/38] riscv: s64ilp32: Temporary workaround solution to gcc problem guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 29/38] riscv: s64ilp32: Introduce ARCH_HAS_64ILP32_KERNEL for syscall guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 30/38] riscv: s64ilp32: Add u32ilp32 ptrace support guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 31/38] riscv: s64ilp32: Add u32ilp32 signal support guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 32/38] riscv: s64ilp32: Validate harts by architecture name guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 33/38] riscv: s64ilp32: Add rv64ilp32_defconfig guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 34/38] riscv: Cleanup rv32_defconfig guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 35/38] clocksource: riscv: s64ilp32: Use __riscv_xlen instead of CONFIG_32BIT guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 36/38] irqchip: " guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 37/38] add tinylab defconfig guoren
2023-11-12 6:15 ` guoren
2023-11-12 6:15 ` [RFC PATCH V2 38/38] 64ilp32 v.s. 64lp64 guoren
2023-11-12 6:15 ` guoren
2023-11-13 4:13 ` [RFC PATCH V2 00/38] rv64ilp32: Running ILP32 on RV64 ISA Guo Ren
2023-11-13 4:13 ` Guo Ren
2023-11-13 4:22 ` Guo Ren
2023-11-13 4:22 ` Guo Ren
2023-12-03 15:31 ` Guo Ren
2023-12-03 15:31 ` Guo Ren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231112061514.2306187-5-guoren@kernel.org \
--to=guoren@kernel.org \
--cc=U2FsdGVkX1@gmail.com \
--cc=andy.chiu@sifive.com \
--cc=anup@brainfault.org \
--cc=apatel@ventanamicro.com \
--cc=arnd@arndb.de \
--cc=atishp@atishpatra.org \
--cc=bjorn@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=conor.dooley@microchip.com \
--cc=fweimer@redhat.com \
--cc=greentime.hu@sifive.com \
--cc=guoren@linux.alibaba.com \
--cc=heiko@sntech.de \
--cc=hjl.tools@gmail.com \
--cc=jiawei@iscas.ac.cn \
--cc=jrtc27@jrtc27.com \
--cc=kito.cheng@sifive.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=liweiwei@iscas.ac.cn \
--cc=luto@kernel.org \
--cc=palmer@rivosinc.com \
--cc=paul.walmsley@sifive.com \
--cc=tglx@linutronix.de \
--cc=vincent.chen@sifive.com \
--cc=wangjunqiang@iscas.ac.cn \
--cc=wefu@redhat.com \
--cc=wuwei2016@iscas.ac.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.