diff --git a/sys/arch/riscv/include/vmparam.h b/sys/arch/riscv/include/vmparam.h index 13ac95cc97d5..a188a802b227 100644 --- a/sys/arch/riscv/include/vmparam.h +++ b/sys/arch/riscv/include/vmparam.h @@ -130,8 +130,15 @@ #define VM_MAX_KERNEL_ADDRESS ((vaddr_t)-0x40000000) /* 0xffffffffc0000000 */ #endif -#define VM_KERNEL_VM_BASE VM_MIN_KERNEL_ADDRESS -#define VM_KERNEL_VM_SIZE 0x2000000 /* 32 MiB (8 / 16 megapages) */ +#define VM_KERNEL_BASE VM_MIN_KERNEL_ADDRESS +#define VM_KERNEL_SIZE 0x2000000 /* 32 MiB (8 / 16 megapages) */ +#define VM_KERNEL_DTB_BASE (VM_KERNEL_BASE + VM_KERNEL_SIZE) +#define VM_KERNEL_DTB_SIZE 0x2000000 /* 32 MiB (8 / 16 megapages) */ + +#define VM_KERNEL_RESERVED (VM_KERNEL_SIZE + VM_KERNEL_DTB_SIZE) + +#define VM_KERNEL_VM_BASE (VM_MIN_KERNEL_ADDRESS + VM_KERNEL_RESERVED) +#define VM_KERNEL_VM_SIZE (VM_MAX_KERNEL_ADDRESS - VM_KERNEL_VM_BASE) #define VM_MAX_ADDRESS VM_MAXUSER_ADDRESS #define VM_MAXUSER_ADDRESS32 ((vaddr_t)(1UL << 31))/* 0x0000000080000000 */ diff --git a/sys/arch/riscv/riscv/genassym.cf b/sys/arch/riscv/riscv/genassym.cf index dd960e573618..9d0271c9cebf 100644 --- a/sys/arch/riscv/riscv/genassym.cf +++ b/sys/arch/riscv/riscv/genassym.cf @@ -182,8 +182,8 @@ define RW_READER RW_READER define VM_MIN_KERNEL_ADDRESS VM_MIN_KERNEL_ADDRESS define VM_MAX_KERNEL_ADDRESS VM_MAX_KERNEL_ADDRESS -define VM_KERNEL_VM_SIZE VM_KERNEL_VM_SIZE - +define VM_KERNEL_BASE VM_KERNEL_BASE +define VM_KERNEL_SIZE VM_KERNEL_SIZE define USPACE USPACE ifdef XSEGSHIFT diff --git a/sys/arch/riscv/riscv/locore.S b/sys/arch/riscv/riscv/locore.S index 3727fad1466b..e535382dafa3 100755 --- a/sys/arch/riscv/riscv/locore.S +++ b/sys/arch/riscv/riscv/locore.S @@ -62,6 +62,10 @@ #define VPRINTXNL(regno) /* nothing */ #endif +#if VM_MIN_KERNEL_ADDRESS != VM_KERNEL_BASE +#error VM_MIN_KERNEL_ADDRESS assumed to match VM_KERNEL_BASE +#endif + /* * Entry point where. * a0 is hartid @@ -225,7 +229,7 @@ ENTRY_NP(start) #error Code assumes PGSHIFT is greater than PTE_PPN_SHIFT #endif - li s5, (VM_KERNEL_VM_SIZE >> SEGSHIFT) // # of megapages + li s5, (VM_KERNEL_SIZE >> SEGSHIFT) // # of megapages li s6, (NBSEG >> (PGSHIFT - PTE_PPN_SHIFT)) // load for ease li s7, PTE_KERN | PTE_R | PTE_W | PTE_X @@ -332,7 +336,7 @@ vstart: call _C_LABEL(init_mmu) #endif - li t0, VM_MIN_KERNEL_ADDRESS + VM_KERNEL_VM_SIZE + li t0, VM_MIN_KERNEL_ADDRESS + VM_KERNEL_SIZE li t1, NBSEG - 1 and t1, s1, t1 or t0, t0, t1