diff --git a/arch/risc-v/src/common/riscv_internal.h b/arch/risc-v/src/common/riscv_internal.h index 100bcb79d69..68149aeb924 100644 --- a/arch/risc-v/src/common/riscv_internal.h +++ b/arch/risc-v/src/common/riscv_internal.h @@ -160,6 +160,9 @@ __asm__ __volatile__("csrc " __STR(reg) ", %0" :: "rK"(bits)); \ }) +#define riscv_append_pmp_region(a, b, s) \ + riscv_config_pmp_region(riscv_next_free_pmp_region(), a, b, s) + #endif /**************************************************************************** diff --git a/arch/risc-v/src/nuttsbi/sbi_start.c b/arch/risc-v/src/nuttsbi/sbi_start.c index e2433a1b397..9919bd03a54 100644 --- a/arch/risc-v/src/nuttsbi/sbi_start.c +++ b/arch/risc-v/src/nuttsbi/sbi_start.c @@ -119,8 +119,7 @@ void sbi_start(void) /* Open everything for PMP */ - WRITE_CSR(pmpaddr0, -1); - WRITE_CSR(pmpcfg0, (PMPCFG_A_NAPOT | PMPCFG_R | PMPCFG_W | PMPCFG_X)); + riscv_append_pmp_region(PMPCFG_A_NAPOT | PMPCFG_RWX_MASK, 0, -1); /* Then jump to the S-mode start function */