From 87daa8e319cbe8f7ba9eff52cc3be09eea7e9b8b Mon Sep 17 00:00:00 2001 From: James Clarke Date: Sun, 3 Nov 2019 03:47:25 +0000 Subject: [PATCH] Revert unwanted MMIOInst diff in e7fbf32b38 This stopped unmapped addresses from faulting, instead giving back a list of all Invalid entries, triggering the "Fetched insts not enough" assertion in FetchStage's doDecode. Fixes rv64mi-p-access. --- src_Core/RISCY_OOO/procs/lib/MMIOInst.bsv | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src_Core/RISCY_OOO/procs/lib/MMIOInst.bsv b/src_Core/RISCY_OOO/procs/lib/MMIOInst.bsv index 368a0af..c4b4884 100644 --- a/src_Core/RISCY_OOO/procs/lib/MMIOInst.bsv +++ b/src_Core/RISCY_OOO/procs/lib/MMIOInst.bsv @@ -77,13 +77,15 @@ module mkMMIOInst(MMIOInst); method InstFetchTarget getFetchTarget(Addr phyPc); let addr = getDataAlignedAddr(phyPc); - if(addr >= mainMemBaseAddr && (addr < mainMemBoundAddr) && - addr != toHostAddr && addr != fromHostAddr) - begin - return MainMem; - end + if (soc_map.m_is_IO_addr (phyPc)) begin + return IODevice; + end + else if(addr >= mainMemBaseAddr && (addr < mainMemBoundAddr) && + addr != toHostAddr && addr != fromHostAddr) begin + return MainMem; + end else begin - return IODevice; + return Fault; end endmethod