summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/controller.cc2
-rw-r--r--src/stage.cc9
2 files changed, 8 insertions, 3 deletions
diff --git a/src/controller.cc b/src/controller.cc
index a5c6691..e439b30 100644
--- a/src/controller.cc
+++ b/src/controller.cc
@@ -35,7 +35,7 @@ Controller::Controller(Stage *stage, Storage *storage, bool is_pipelined)
this->gprs.at(2) = MEM_WORDS; // set the stack pointer
}
-void Controller::run_for(int number)
+void Controller::run_for(long number)
{
int i;
for (i = 0; i < number; ++i) {
diff --git a/src/stage.cc b/src/stage.cc
index ac688d8..4eab7d3 100644
--- a/src/stage.cc
+++ b/src/stage.cc
@@ -59,10 +59,15 @@ InstrDTO *Stage::advance(Response p)
this->status = READY;
}
- n = (p != READY || this->status != READY) ? STALLED : READY;
+ if (!this->curr_instr)
+ n = READY;
+ else
+ n = (p != READY || this->status != READY) ? STALLED : READY;
+
s = this->next->advance(n);
- if (s)
+ if (s) {
this->curr_instr = s;
+ }
return r;
}