|
|
|
@ -357,7 +357,7 @@ reg_t mmu_t::s2xlate(reg_t gva, reg_t gpa, access_type type, access_type trap_ty |
|
|
|
|
|
|
|
int napot_bits = ((pte & PTE_N) ? (clz(ppn) + 1) : 0); |
|
|
|
if (((pte & PTE_N) && (ppn == 0 || i != 0)) || (napot_bits != 0 && napot_bits != 4)) |
|
|
|
throw_access_exception(gva, trap_type); |
|
|
|
break; |
|
|
|
|
|
|
|
reg_t page_base = ((ppn & ~((reg_t(1) << napot_bits) - 1)) |
|
|
|
| (vpn & ((reg_t(1) << napot_bits) - 1)) |
|
|
|
@ -437,7 +437,7 @@ reg_t mmu_t::walk(reg_t addr, access_type type, reg_t mode, bool virt, bool mxr) |
|
|
|
|
|
|
|
int napot_bits = ((pte & PTE_N) ? (clz(ppn) + 1) : 0); |
|
|
|
if (((pte & PTE_N) && (ppn == 0 || i != 0)) || (napot_bits != 0 && napot_bits != 4)) |
|
|
|
throw_access_exception(addr, type); |
|
|
|
break; |
|
|
|
|
|
|
|
reg_t page_base = ((ppn & ~((reg_t(1) << napot_bits) - 1)) |
|
|
|
| (vpn & ((reg_t(1) << napot_bits) - 1)) |
|
|
|
|