This is an automated email from the ASF dual-hosted git repository.
xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 140959f63f4 boards/arty_a7: Move the user address window of the kernel
builds.
140959f63f4 is described below
commit 140959f63f4e059d6259448eecfa74078fde6947
Author: Marco Casaroli <[email protected]>
AuthorDate: Mon Oct 26 18:12:17 2026 +0100
boards/arty_a7: Move the user address window of the kernel builds.
A kernel build reserves a 1 GiB window for user space that starts at
CONFIG_ARCH_TEXT_VBASE (ARCH_ADDRENV_VBASE to ARCH_ADDRENV_VEND). In
knsh and knsh-tickless the window is 0x10000000-0x4fffffff, which holds
the kernel text, data and page pool at 0x40000000-0x40bfffff. Since
commit ab9dcf33649 ("arch/risc-v: map nothing of the kernel over user
space"), mmu_ln_setentry() refuses a global kernel mapping in that
window, so both configurations panic at boot.
The I/O mapping (CONFIG_LITEX_MMU_IO_BASE 0x80000000, size 0x7f000000)
also covers every other 1 GiB window above the kernel. Map only the
CSR range 0xf0000000-0xfeffffff, which holds all the registers that
these configurations use, and put the user window at
0x80000000-0xbfffffff. The board gnu-elf.ld links the programs at the
new text and data addresses.
Assisted-by: Claude Code:claude-opus-5-5
Signed-off-by: Marco Casaroli <[email protected]>
---
boards/risc-v/litex/arty_a7/configs/knsh-tickless/defconfig | 8 +++++---
boards/risc-v/litex/arty_a7/configs/knsh/defconfig | 8 +++++---
boards/risc-v/litex/arty_a7/scripts/gnu-elf.ld | 4 ++--
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/boards/risc-v/litex/arty_a7/configs/knsh-tickless/defconfig
b/boards/risc-v/litex/arty_a7/configs/knsh-tickless/defconfig
index c45bab704f5..093f0a68d26 100644
--- a/boards/risc-v/litex/arty_a7/configs/knsh-tickless/defconfig
+++ b/boards/risc-v/litex/arty_a7/configs/knsh-tickless/defconfig
@@ -16,9 +16,9 @@ CONFIG_ARCH_BOARD_ARTY_A7=y
CONFIG_ARCH_CHIP="litex"
CONFIG_ARCH_CHIP_LITEX=y
CONFIG_ARCH_DATA_NPAGES=128
-CONFIG_ARCH_DATA_VBASE=0x10400000
+CONFIG_ARCH_DATA_VBASE=0x80400000
CONFIG_ARCH_HEAP_NPAGES=128
-CONFIG_ARCH_HEAP_VBASE=0x10800000
+CONFIG_ARCH_HEAP_VBASE=0x80800000
CONFIG_ARCH_INTERRUPTSTACK=8192
CONFIG_ARCH_KERNEL_STACKSIZE=3072
CONFIG_ARCH_PGPOOL_MAPPING=y
@@ -28,7 +28,7 @@ CONFIG_ARCH_PGPOOL_VBASE=0x40800000
CONFIG_ARCH_RISCV=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_TEXT_NPAGES=128
-CONFIG_ARCH_TEXT_VBASE=0x10000000
+CONFIG_ARCH_TEXT_VBASE=0x80000000
CONFIG_ARCH_USE_MMU=y
CONFIG_ARCH_USE_MPU=y
CONFIG_ARCH_USE_S_MODE=y
@@ -55,6 +55,8 @@ CONFIG_LIBC_PERROR_STDOUT=y
CONFIG_LIBC_STRERROR=y
CONFIG_LITEX_APPLICATION_RAMDISK=y
CONFIG_LITEX_CORE_VEXRISCV_SMP=y
+CONFIG_LITEX_MMU_IO_BASE=0xF0000000
+CONFIG_LITEX_MMU_IO_SIZE=0x0F000000
CONFIG_MM_PGALLOC=y
CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
CONFIG_NSH_FILEIOSIZE=512
diff --git a/boards/risc-v/litex/arty_a7/configs/knsh/defconfig
b/boards/risc-v/litex/arty_a7/configs/knsh/defconfig
index 9396366431b..6b01d97791b 100644
--- a/boards/risc-v/litex/arty_a7/configs/knsh/defconfig
+++ b/boards/risc-v/litex/arty_a7/configs/knsh/defconfig
@@ -15,9 +15,9 @@ CONFIG_ARCH_BOARD_ARTY_A7=y
CONFIG_ARCH_CHIP="litex"
CONFIG_ARCH_CHIP_LITEX=y
CONFIG_ARCH_DATA_NPAGES=128
-CONFIG_ARCH_DATA_VBASE=0x10400000
+CONFIG_ARCH_DATA_VBASE=0x80400000
CONFIG_ARCH_HEAP_NPAGES=128
-CONFIG_ARCH_HEAP_VBASE=0x10800000
+CONFIG_ARCH_HEAP_VBASE=0x80800000
CONFIG_ARCH_INTERRUPTSTACK=8192
CONFIG_ARCH_KERNEL_STACKSIZE=3072
CONFIG_ARCH_PGPOOL_MAPPING=y
@@ -27,7 +27,7 @@ CONFIG_ARCH_PGPOOL_VBASE=0x40800000
CONFIG_ARCH_RISCV=y
CONFIG_ARCH_STACKDUMP=y
CONFIG_ARCH_TEXT_NPAGES=128
-CONFIG_ARCH_TEXT_VBASE=0x10000000
+CONFIG_ARCH_TEXT_VBASE=0x80000000
CONFIG_ARCH_USE_MMU=y
CONFIG_ARCH_USE_MPU=y
CONFIG_ARCH_USE_S_MODE=y
@@ -54,6 +54,8 @@ CONFIG_LIBC_PERROR_STDOUT=y
CONFIG_LIBC_STRERROR=y
CONFIG_LITEX_APPLICATION_RAMDISK=y
CONFIG_LITEX_CORE_VEXRISCV_SMP=y
+CONFIG_LITEX_MMU_IO_BASE=0xF0000000
+CONFIG_LITEX_MMU_IO_SIZE=0x0F000000
CONFIG_MM_PGALLOC=y
CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=6
CONFIG_NSH_FILEIOSIZE=512
diff --git a/boards/risc-v/litex/arty_a7/scripts/gnu-elf.ld
b/boards/risc-v/litex/arty_a7/scripts/gnu-elf.ld
index 70a931e7dbb..055c94ee496 100644
--- a/boards/risc-v/litex/arty_a7/scripts/gnu-elf.ld
+++ b/boards/risc-v/litex/arty_a7/scripts/gnu-elf.ld
@@ -22,7 +22,7 @@
SECTIONS
{
- . = 0x10000000;
+ . = 0x80000000;
.text :
{
_stext = . ;
@@ -54,7 +54,7 @@ SECTIONS
_erodata = . ;
}
- . = 0x10401000;
+ . = 0x80401000;
.data :
{
_sdata = . ;