diff --git a/src/cpu/o3/lsq.hh b/src/cpu/o3/lsq.hh index 6f7820113f..4701a8c9ac 100644 --- a/src/cpu/o3/lsq.hh +++ b/src/cpu/o3/lsq.hh @@ -223,8 +223,6 @@ class LSQ NotIssued, Translation, Request, - Complete, - Squashed, Fault, PartialFault, }; diff --git a/src/cpu/o3/lsq_impl.hh b/src/cpu/o3/lsq_impl.hh index 27a563071e..a028424b02 100644 --- a/src/cpu/o3/lsq_impl.hh +++ b/src/cpu/o3/lsq_impl.hh @@ -985,7 +985,6 @@ LSQ::SingleDataRequest::recvTimingResp(PacketPtr pkt) { assert(_numOutstandingPackets == 1); auto state = dynamic_cast(pkt->senderState); - setState(State::Complete); flags.set(Flag::Complete); state->outstanding--; assert(pkt == _packets.front()); @@ -1005,7 +1004,6 @@ LSQ::SplitDataRequest::recvTimingResp(PacketPtr pkt) numReceivedPackets++; state->outstanding--; if (numReceivedPackets == _packets.size()) { - setState(State::Complete); flags.set(Flag::Complete); /* Assemble packets. */ PacketPtr resp = isLoad() diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh index b71ed7f78d..c2483d5674 100644 --- a/src/cpu/o3/lsq_unit_impl.hh +++ b/src/cpu/o3/lsq_unit_impl.hh @@ -968,8 +968,10 @@ LSQUnit::writeback(const DynInstPtr &inst, PacketPtr pkt) // the access as this discards the current fault. // If we have an outstanding fault, the fault should only be of - // type ReExec. - assert(dynamic_cast(inst->fault.get()) != nullptr); + // type ReExec or - in case of a SplitRequest - a partial + // translation fault + assert(dynamic_cast(inst->fault.get()) != nullptr || + inst->savedReq->isPartialFault()); DPRINTF(LSQUnit, "Not completing instruction [sn:%lli] access " "due to pending fault.\n", inst->seqNum);