cpu-o3: Add Data Abort handler for Atomic Instructions

Bug fixing patch for Data Abort exception when executing an
atomic instruction. You can see the details in this JIRA ticket:
https://gem5.atlassian.net/browse/GEM5-784

Change-Id: I79e7113efd8157fba61b6d4a0b0c09bc6f85ec29
Signed-off-by: Víctor Soria <victor.soria@bsc.es>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/35295
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
vsoria
2020-09-29 09:04:40 +02:00
committed by Bobby R. Bruce
parent e61f62b478
commit f1ad44b123

View File

@@ -700,6 +700,17 @@ LSQUnit::executeStore(const DynInstPtr &store_inst)
DPRINTF(LSQUnit,"Fault on Store PC %s, [sn:%lli], Size = 0\n",
store_inst->pcState(), store_inst->seqNum);
if (store_inst->isAtomic()) {
// If the instruction faulted, then we need to send it along
// to commit without the instruction completing.
if (!(store_inst->hasRequest() && store_inst->strictlyOrdered()) ||
store_inst->isAtCommit()) {
store_inst->setExecuted();
}
iewStage->instToCommit(store_inst);
iewStage->activityThisCycle();
}
return store_fault;
}