From 87785eb25c4ef92be94894be2a190cb79877cb16 Mon Sep 17 00:00:00 2001 From: Jonathan Woodruff Date: Thu, 14 Oct 2021 17:13:18 +0000 Subject: [PATCH] Don't translate invalid vaddrs in the DTLB. --- src_Core/RISCY_OOO/procs/lib/DTlb.bsv | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src_Core/RISCY_OOO/procs/lib/DTlb.bsv b/src_Core/RISCY_OOO/procs/lib/DTlb.bsv index 33d63dc..aaa9df1 100644 --- a/src_Core/RISCY_OOO/procs/lib/DTlb.bsv +++ b/src_Core/RISCY_OOO/procs/lib/DTlb.bsv @@ -473,7 +473,13 @@ module mkDTlb#( else if (vm_info.sv39) begin let vpn = getVpn(r.addr); let trans_result = tlb.translate(vpn, vm_info.asid); - if (trans_result.hit) begin + if (!validVirtualAddress(r.addr)) begin + // page fault + Exception fault = r.write ? excStorePageFault : excLoadPageFault; + pendWait[idx] <= None; + pendResp[idx] <= tuple3(?, Valid (fault), False); + if(verbose) $display("[DTLB] req invalid virtual address: idx %d; ", idx, fshow(r)); + end else if (trans_result.hit) begin // TLB hit let entry = trans_result.entry; // check permission