Browse Source

Fix page table walker not respecting valid bit

pull/57/head
Andrew Waterman 10 years ago
parent
commit
1b797b1aac
  1. 2
      riscv/mmu.cc

2
riscv/mmu.cc

@ -153,7 +153,7 @@ reg_t mmu_t::walk(reg_t addr, access_type type, reg_t mode)
base = ppn << PGSHIFT;
} else if ((pte & PTE_U) ? supervisor && pum : !supervisor) {
break;
} else if (!(pte & PTE_R) && (pte & PTE_W)) { // reserved
} else if (!(pte & PTE_V) || (!(pte & PTE_R) && (pte & PTE_W))) {
break;
} else if (type == FETCH ? !(pte & PTE_X) :
type == LOAD ? !(pte & PTE_R) && !(mxr && (pte & PTE_X)) :

Loading…
Cancel
Save