diff options
| author | Shell <[email protected]> | 2024-06-18 11:15:59 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-06-18 11:15:59 +0800 |
| commit | 65c99472253051521eaa5a670085b2cc0da4be3e (patch) | |
| tree | 9c09d7b263e88be5674a647db2133b9080c2ca67 /libcpu/Kconfig | |
| parent | 73727fa06eba995fb071bec58c7811e1a7cdc889 (diff) | |
[libcpu] rv64: support for ARCH_REMAP_KERNEL (#9067)
* [libcpu] support for ARCH_REMAP_KERNEL
These changes introduce support for the ARCH_REMAP_KERNEL configuration,
which isolates kernel space in high virtual address regions. This feature
is necessary to enhance memory protection and management by segregating
user and kernel spaces more effectively.
Changes:
- Updated conditional macros to check for ARCH_REMAP_KERNEL instead of
ARCH_KERNEL_IN_HIGH_VA in board initialization files to reflect the new
configuration option.
- Modified qemu-virt64-riscv Kconfig and SConstruct files to include and
utilize ARCH_REMAP_KERNEL.
- Created a new linker script `link_smart.lds` for smart linking in qemu-virt64-riscv.
- Updated rtconfig.py to use a more flexible execution path setup.
- Enhanced user address space definitions in `lwp_arch.h` to support the
new virtual address mappings.
- Adjusted kernel memory initialization and mapping logic in `c906/mmu.c`
and `virt64/mmu.c` to account for high virtual address regions.
- Added Kconfig option to enable ARCH_REMAP_KERNEL for RISCV64 architectures.
- Enhanced memory setup functions to support new mapping scheme, including
updates to early page table setup and address relocation logic.
These modifications ensure that the system can utilize high memory
addresses for the kernel, improving memory isolation and system stability.
Signed-off-by: Shell <[email protected]>
* fixup: CI run failed
* bsp: default config without using smart
* fixup: static checks
* restore rt_hw_mmu_kernel_map_init for D1
---------
Signed-off-by: Shell <[email protected]>
Diffstat (limited to 'libcpu/Kconfig')
| -rw-r--r-- | libcpu/Kconfig | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libcpu/Kconfig b/libcpu/Kconfig index 8c211de236..657fbfb0e9 100644 --- a/libcpu/Kconfig +++ b/libcpu/Kconfig @@ -133,6 +133,7 @@ if RT_USING_SMART hex "The virtural address of kernel start" default 0xffff000000000000 if ARCH_ARMV8 default 0xc0000000 if ARCH_ARM + default 0xffffffc000000000 if ARCH_RISCV && ARCH_REMAP_KERNEL default 0x80000000 if ARCH_RISCV depends on ARCH_MM_MMU @@ -255,6 +256,14 @@ config ARCH_RISCV64 select ARCH_CPU_64BIT bool +if ARCH_RISCV64 + config ARCH_REMAP_KERNEL + bool + depends on RT_USING_SMART + help + Remapping kernel image to high virtual address region +endif + config ARCH_IA32 bool |
