diff options
author | Korey Sewell <ksewell@umich.edu> | 2009-05-12 15:01:16 -0400 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2009-05-12 15:01:16 -0400 |
commit | 3a057bdbb10a265fb36f7827cd06142ad1624530 (patch) | |
tree | b46e844fd6006561a0033aaefe8790b02c50752b /src/cpu/inorder/resource.cc | |
parent | f1c97e830b2bf9d1fb457050f97dfd4ec9312932 (diff) | |
download | gem5-3a057bdbb10a265fb36f7827cd06142ad1624530.tar.xz |
inorder-tlb: squash insts in TLB correctly
TLB had a bug where if it was stalled and waiting , it would not squash all instructions older than squashed instruction correctly
* * *
Diffstat (limited to 'src/cpu/inorder/resource.cc')
-rw-r--r-- | src/cpu/inorder/resource.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/cpu/inorder/resource.cc b/src/cpu/inorder/resource.cc index 2846efe7b..d8fefe0c9 100644 --- a/src/cpu/inorder/resource.cc +++ b/src/cpu/inorder/resource.cc @@ -304,9 +304,12 @@ Resource::squash(DynInstPtr inst, int stage_num, InstSeqNum squash_seq_num, unsi req_ptr->getInst()->readTid(), req_ptr->getInst()->seqNum); + req_ptr->setSquashed(); + int req_slot_num = req_ptr->getSlot(); - unscheduleEvent(req_slot_num); + if (resourceEvent[req_slot_num].scheduled()) + unscheduleEvent(req_slot_num); // Mark request for later removal cpu->reqRemoveList.push(req_ptr); |