inorder: InstSeqNum bug
authorKorey Sewell <ksewell@umich.edu>
Wed, 23 Feb 2011 21:35:18 +0000 (16:35 -0500)
committerKorey Sewell <ksewell@umich.edu>
Wed, 23 Feb 2011 21:35:18 +0000 (16:35 -0500)
Because int and not InstSeqNum was used in a couple of places, you can
overflow the int type and thus get wierd bugs when the sequence number
is negative (or some wierd value)

src/cpu/inorder/resources/agen_unit.cc
src/cpu/inorder/resources/branch_predictor.cc
src/cpu/inorder/resources/execution_unit.cc
src/cpu/inorder/resources/fetch_seq_unit.cc
src/cpu/inorder/resources/tlb_unit.cc
src/cpu/inorder/resources/use_def.cc

index 764cd9446e5e23b198fc3c1ff589bd9e862e69d5..3e26c4da3c61ffd18955b64ef3ab1b3626935f60 100644 (file)
@@ -55,7 +55,7 @@ AGENUnit::execute(int slot_num)
 #if TRACING_ON
     ThreadID tid = inst->readTid();
 #endif
-    int seq_num = inst->seqNum;
+    InstSeqNum seq_num = inst->seqNum;
 
     switch (agen_req->cmd)
     {
index 5a22e40ebfaa8f8dba15e14307ccf897ffa6d50c..4b8205070191e3650e194fc60715e79573533155 100644 (file)
@@ -69,7 +69,7 @@ BranchPredictor::execute(int slot_num)
     ResourceRequest* bpred_req = reqs[slot_num];
     DynInstPtr inst = bpred_req->inst;
     ThreadID tid = inst->readTid();
-    int seq_num = inst->seqNum;
+    InstSeqNum seq_num = inst->seqNum;
 
     switch (bpred_req->cmd)
     {
index b2540cff8b18962fa8fc91fa4775ce200deef581..311add9f822a5ad8b06331deb21873286ba81b53 100644 (file)
@@ -85,7 +85,7 @@ ExecutionUnit::execute(int slot_num)
     ResourceRequest* exec_req = reqs[slot_num];
     DynInstPtr inst = reqs[slot_num]->inst;
     Fault fault = NoFault;
-    int seq_num = inst->seqNum;
+    InstSeqNum seq_num = inst->seqNum;
     Tick cur_tick = curTick();
 
     if (cur_tick == serializeTick) {
index d23ea0a8268500cbe4b76d3ef090910c96e948fe..8d9187c7abe0fbec3c82a567bd9c60f3ed54fc99 100644 (file)
@@ -76,7 +76,7 @@ FetchSeqUnit::execute(int slot_num)
     DynInstPtr inst = fs_req->inst;
     ThreadID tid = inst->readTid();
     int stage_num = fs_req->getStageNum();
-    int seq_num = inst->seqNum;
+    InstSeqNum seq_num = inst->seqNum;
 
     DPRINTF(InOrderFetchSeq, "[tid:%i]: Current PC is %s\n", tid,
             pc[tid]);
index 37aec2209171660ef64f4de31591eb5a00919703..9a0c9fe3297efd0ff80a59ef35f02ac6c3dd6e11 100644 (file)
@@ -109,7 +109,7 @@ TLBUnit::execute(int slot_idx)
 
     DynInstPtr inst = tlb_req->inst;
     ThreadID tid = inst->readTid();
-    int seq_num = inst->seqNum;
+    InstSeqNum seq_num = inst->seqNum;
     int stage_num = tlb_req->getStageNum();
 
     tlb_req->fault = NoFault;
index 19246a30bd76a39ad089e5c8736ed7afe356af8f..c687024ce012c388dbef5eff6cc08ec40c9628f1 100644 (file)
@@ -145,7 +145,7 @@ UseDefUnit::execute(int slot_idx)
 
     DynInstPtr inst = ud_req->inst;
     ThreadID tid = inst->readTid();
-    int seq_num = inst->seqNum;
+    InstSeqNum seq_num = inst->seqNum;
     int ud_idx = ud_req->useDefIdx;
 
     // If there is a non-speculative instruction