summaryrefslogtreecommitdiff
path: root/riscv
diff options
context:
space:
mode:
authorPrashanth Mundkur2018-05-07 21:15:13 -0700
committerPrashanth Mundkur2018-05-07 21:15:13 -0700
commit5bf05d7f31b55a1cda9a93261f338adb04208e7d (patch)
tree6ef92e43c5d5257b45c4f6e6fa41bc189955fdcd /riscv
parente865a47422dc186d9721cb208ebab1f1a7d7624e (diff)
Fix another mask computation bug.
Diffstat (limited to 'riscv')
-rw-r--r--riscv/riscv_vmem.sail3
1 files changed, 2 insertions, 1 deletions
diff --git a/riscv/riscv_vmem.sail b/riscv/riscv_vmem.sail
index 26282d3e..7fddb047 100644
--- a/riscv/riscv_vmem.sail
+++ b/riscv/riscv_vmem.sail
@@ -194,7 +194,8 @@ val make_TLB39_Entry : (asid64, bool, vaddr39, paddr39, SV39_PTE, nat, paddr39)
function make_TLB39_Entry(asid, global, vAddr, pAddr, pte, level, pteAddr) = {
let shift : nat = PAGESIZE_BITS + (level * SV39_LEVEL_BITS);
- let vAddrMask : vaddr39 = shiftl(EXTZ(0b1), shift) - 1;
+ /* fixme hack: use a better idiom for masks */
+ let vAddrMask : vaddr39 = shiftl(vAddr ^ vAddr ^ EXTZ(0b1), shift) - 1;
let vMatchMask : vaddr39 = ~ (vAddrMask);
struct {
asid = asid,