summaryrefslogtreecommitdiff
path: root/src/cpu/o3/lsq_unit_impl.hh
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2019-05-12 16:20:05 +0800
committerIru Cai <mytbk920423@gmail.com>2019-05-12 16:22:45 +0800
commitd3e361f60741ea9ebea06375c8525385014dd9d2 (patch)
tree4cc8146567125ac5bc56f8cd4c9f14a8a38f9f0c /src/cpu/o3/lsq_unit_impl.hh
parentb0e609d5cf6961bb9b3f12065659e1c42c13ef06 (diff)
downloadgem5-d3e361f60741ea9ebea06375c8525385014dd9d2.tar.xz
finally runs dhrystone
Change-Id: I7466a825f8726682622d237460311a1c4b23b8ad
Diffstat (limited to 'src/cpu/o3/lsq_unit_impl.hh')
-rw-r--r--src/cpu/o3/lsq_unit_impl.hh7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh
index ebc963d5b..80445e261 100644
--- a/src/cpu/o3/lsq_unit_impl.hh
+++ b/src/cpu/o3/lsq_unit_impl.hh
@@ -128,6 +128,8 @@ LSQUnit<Impl>::completeDataAccess(PacketPtr pkt)
DPRINTF(LSQUnit, "spec load miss for inst [sn:%lli], fence it.\n",
inst->seqNum);
inst->fenceDelay(true);
+ } else {
+ DPRINTF(LSQUnit, "spec load hit for inst [sn:%lli].\n");
}
assert(!cpu->switchedOut());
@@ -918,6 +920,7 @@ LSQUnit<Impl>::updateVisibleState()
//iterate all the loads and update its fencedelay state accordingly
while (load_idx != loadTail && loadQueue[load_idx]){
DynInstPtr inst = loadQueue[load_idx];
+ DPRINTF(LSQUnit, "update visible state for inst [sn:%lli].\n", inst->seqNum);
if (!loadInExec){
@@ -981,6 +984,7 @@ LSQUnit<Impl>::updateVisibleState()
assert(0);
//--loadsToVLD;
}
+ DPRINTF(LSQUnit, "inst [sn:%lli] not ready to expose.\n", inst->seqNum);
inst->readyToExpose(false);
} else {
/* set taint for dst registers */
@@ -1370,7 +1374,10 @@ LSQUnit<Impl>::writeback(const DynInstPtr &inst, PacketPtr pkt)
if (inst->fenceDelay()) {
DPRINTF(LSQUnit, "To write back a fence delayed spec load [sn:%lli].\n", inst->seqNum);
+ assert(pkt->isSpec());
inst->onlyWaitForFence(true);
+ inst->translationStarted(false);
+ inst->translationCompleted(false);
iewStage->instQueue.deferMemInst(inst);
} else if (!inst->isExecuted()) {
inst->setExecuted();