cpu: Relax check on squashed non-speculative instructions
This patch relaxes the check performed when squashing non-speculative instructions, as it caused problems with loads that were marked ready, and then stalled on a blocked cache. The assertion is now allowing memory references to be non-faulting.
This commit is contained in:
parent
6019d73db4
commit
7db542c0dd
|
@ -1192,8 +1192,15 @@ InstructionQueue<Impl>::doSquash(ThreadID tid)
|
|||
NonSpecMapIt ns_inst_it =
|
||||
nonSpecInsts.find(squashed_inst->seqNum);
|
||||
|
||||
// we remove non-speculative instructions from
|
||||
// nonSpecInsts already when they are ready, and so we
|
||||
// cannot always expect to find them
|
||||
if (ns_inst_it == nonSpecInsts.end()) {
|
||||
assert(squashed_inst->getFault() != NoFault);
|
||||
// loads that became ready but stalled on a
|
||||
// blocked cache are alreayd removed from
|
||||
// nonSpecInsts, and have not faulted
|
||||
assert(squashed_inst->getFault() != NoFault ||
|
||||
squashed_inst->isMemRef());
|
||||
} else {
|
||||
|
||||
(*ns_inst_it).second = NULL;
|
||||
|
|
Loading…
Reference in a new issue