diff options
author | Korey Sewell <ksewell@umich.edu> | 2010-01-31 18:30:59 -0500 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2010-01-31 18:30:59 -0500 |
commit | c7f6e2661c958d996479ae9fe8c8cf2c8a9482f6 (patch) | |
tree | d78a7ba5dc62904179d13f612a0138bdccd7de79 /src/cpu/inorder/inorder_dyn_inst.hh | |
parent | 9357e353fc976a409fb0cb3a875b402f452577f7 (diff) | |
download | gem5-c7f6e2661c958d996479ae9fe8c8cf2c8a9482f6.tar.xz |
inorder: double delete inst bug
Make sure that instructions are dereferenced/deleted twice by marking they are
on the remove list
Diffstat (limited to 'src/cpu/inorder/inorder_dyn_inst.hh')
-rw-r--r-- | src/cpu/inorder/inorder_dyn_inst.hh | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/cpu/inorder/inorder_dyn_inst.hh b/src/cpu/inorder/inorder_dyn_inst.hh index 8a5f9cf25..8c9cd69e0 100644 --- a/src/cpu/inorder/inorder_dyn_inst.hh +++ b/src/cpu/inorder/inorder_dyn_inst.hh @@ -164,6 +164,7 @@ class InOrderDynInst : public FastAlloc, public RefCounted /// instructions ahead of it SerializeAfter, /// Needs to serialize instructions behind it SerializeHandled, /// Serialization has been handled + RemoveList, /// Is Instruction on Remove List? NumStatus }; @@ -342,7 +343,8 @@ class InOrderDynInst : public FastAlloc, public RefCounted bool splitInst; int splitFinishCnt; uint64_t *split2ndStoreDataPtr; - + bool splitInstSked; + //////////////////////////////////////////////////////////// // // BASE INSTRUCTION INFORMATION. @@ -915,6 +917,12 @@ class InOrderDynInst : public FastAlloc, public RefCounted /** Returns whether or not the entry is on the CPU Reg Dep Map */ bool isRegDepEntry() const { return status[RegDepMapEntry]; } + /** Sets this instruction as entered on the CPU Reg Dep Map */ + void setRemoveList() { status.set(RemoveList); } + + /** Returns whether or not the entry is on the CPU Reg Dep Map */ + bool isRemoveList() const { return status[RemoveList]; } + /** Sets this instruction as completed. */ void setCompleted() { status.set(Completed); } |