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 = . ;

Reply via email to