diff options
author | Daniel Lustig <dannylustig@gmail.com> | 2020-12-07 18:23:41 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-07 15:23:41 -0800 |
commit | d74b2cd324bd88f7d824a8f106a63dce06038bcf (patch) | |
tree | 0ed90cc4667e5de49a75e8b0af84c857ac87fe4e | |
parent | a760df2d3226944a71eb117eaa8dd29248e1497d (diff) | |
download | riscv-isa-sim-d74b2cd324bd88f7d824a8f106a63dce06038bcf.zip riscv-isa-sim-d74b2cd324bd88f7d824a8f106a63dce06038bcf.tar.gz riscv-isa-sim-d74b2cd324bd88f7d824a8f106a63dce06038bcf.tar.bz2 |
Oops...napot_bits should use ctz, not clz (#614)
-rw-r--r-- | riscv/mmu.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/riscv/mmu.cc b/riscv/mmu.cc index 23f132e..68d6839 100644 --- a/riscv/mmu.cc +++ b/riscv/mmu.cc @@ -355,7 +355,7 @@ reg_t mmu_t::s2xlate(reg_t gva, reg_t gpa, access_type type, access_type trap_ty reg_t vpn = gpa >> PGSHIFT; reg_t page_mask = (reg_t(1) << PGSHIFT) - 1; - int napot_bits = ((pte & PTE_N) ? (clz(ppn) + 1) : 0); + int napot_bits = ((pte & PTE_N) ? (ctz(ppn) + 1) : 0); if (((pte & PTE_N) && (ppn == 0 || i != 0)) || (napot_bits != 0 && napot_bits != 4)) break; @@ -435,7 +435,7 @@ reg_t mmu_t::walk(reg_t addr, access_type type, reg_t mode, bool virt, bool mxr) // for superpage or Zsn NAPOT mappings, make a fake leaf PTE for the TLB's benefit. reg_t vpn = addr >> PGSHIFT; - int napot_bits = ((pte & PTE_N) ? (clz(ppn) + 1) : 0); + int napot_bits = ((pte & PTE_N) ? (ctz(ppn) + 1) : 0); if (((pte & PTE_N) && (ppn == 0 || i != 0)) || (napot_bits != 0 && napot_bits != 4)) break; |