Hopefully don't wedge on ifetch bus error.
We think that we were wedging on IFetch bus error. It appears that we didn't make the last instruction fragment valid in the bus error case, and expect that this path was not previously exercised. This change returns 0s (to hopefully make the error less subtle) in exactly the right number of fragments.
This commit is contained in:
committed by
GitHub
parent
0970951184
commit
08231b7e5c
@@ -968,10 +968,8 @@ module mkMMIOPlatform #(Vector#(CoreNum, MMIOCoreToPlatform) cores,
|
||||
// Access fault
|
||||
Vector #(SupSizeX2, Maybe #(Instruction16)) resp = replicate (Invalid);
|
||||
for(Integer i = 0; i < valueof (SupSizeX2); i = i+1) begin
|
||||
if (fromInteger (i) < fetchingWay)
|
||||
resp [i] = Valid (fetchedInsts [i]);
|
||||
else if (fromInteger (i) == fetchingWay)
|
||||
resp [i] = tagged Invalid;
|
||||
if (fromInteger (i) <= fetchingWay)
|
||||
resp [i] = Valid (unpack(pack(0)));
|
||||
end
|
||||
cores[reqCore].pRs.enq (tagged InstFetch resp);
|
||||
state <= SelectReq;
|
||||
|
||||
Reference in New Issue
Block a user