diff --git a/arch/risc-v/src/common/riscv_addrenv_pgmap.c b/arch/risc-v/src/common/riscv_addrenv_pgmap.c index 0d36c1adeb107..08335387a0295 100644 --- a/arch/risc-v/src/common/riscv_addrenv_pgmap.c +++ b/arch/risc-v/src/common/riscv_addrenv_pgmap.c @@ -198,7 +198,7 @@ int up_addrenv_kmap_init(void) next = g_kernel_pgt_pbase; vaddr = CONFIG_ARCH_KMAP_VBASE; - for (i = 0; i < (ARCH_SPGTS - 1); i++) + for (i = 0; i < ARCH_SPGTS; i++) { /* Connect the static page tables */ @@ -211,6 +211,10 @@ int up_addrenv_kmap_init(void) addrenv->satp = mmu_satp_reg(g_kernel_pgt_pbase, 0); + /* When all is set and done, flush the data caches */ + + __DMB(); + return OK; }