57127b9429
This implements initial support for kernel build (address environments, page allocator) for RISC-V. This is done a bit differently compared to the ARMV7 implementation: - Support implemented for Sv39 MMU, however the implementation should be extensible for other MMU types also. - Instead of preserving and moving the L1 references around, a canonical approach is used instead, where the page table base address register is switched upon context switch. - To preserve a bit of memory, only a single L1/L2 table is supported, this gives access to 1GiB of virtual memory for each process, which should be more than enough. Some things worth noting: - Assumes page pool is mapped with vaddr=paddr mappings - The CONFIG_ARCH_XXXX_VBASE and CONFIG_ARCH_XXXX_NPAGES values are ignored, with the exception of CONFIG_ARCH_DATA_VBASE which is used for ARCH_DATA_RESERVE - ARCH_DATA_RESERVE is placed at the beginning of the userspace task's address environment |
||
---|---|---|
.. | ||
bl602 | ||
c906 | ||
esp32c3 | ||
fe310 | ||
k210 | ||
litex | ||
mpfs | ||
qemu-rv | ||
rv32m1 | ||
.gitignore | ||
arch.h | ||
barriers.h | ||
csr.h | ||
elf.h | ||
inttypes.h | ||
irq.h | ||
limits.h | ||
mode.h | ||
setjmp.h | ||
spinlock.h | ||
stdarg.h | ||
syscall.h | ||
types.h |