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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user