aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Lustig <dannylustig@gmail.com>2020-12-07 18:23:41 -0500
committerGitHub <noreply@github.com>2020-12-07 15:23:41 -0800
commitd74b2cd324bd88f7d824a8f106a63dce06038bcf (patch)
tree0ed90cc4667e5de49a75e8b0af84c857ac87fe4e
parenta760df2d3226944a71eb117eaa8dd29248e1497d (diff)
downloadspike-d74b2cd324bd88f7d824a8f106a63dce06038bcf.zip
spike-d74b2cd324bd88f7d824a8f106a63dce06038bcf.tar.gz
spike-d74b2cd324bd88f7d824a8f106a63dce06038bcf.tar.bz2
Oops...napot_bits should use ctz, not clz (#614)
-rw-r--r--riscv/mmu.cc4
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;