From 2235e18ad81be4ed7097cd9cab93e35a990ec327 Mon Sep 17 00:00:00 2001 From: bd Date: Mon, 31 Mar 2025 23:49:13 -0400 Subject: Partial commit before merge --- src/sim/ex.cc | 22 +++++++++------------- src/sim/stage.cc | 5 +++-- 2 files changed, 12 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/sim/ex.cc b/src/sim/ex.cc index 95cce8d..83c72d5 100644 --- a/src/sim/ex.cc +++ b/src/sim/ex.cc @@ -342,17 +342,13 @@ void EX::advance_helper() signed int s1, s2, s3; Mnemonic m; - // it may be good to ensure we are not doing - // work that has already been done - if (this->curr_instr) { - m = this->curr_instr->get_mnemonic(); - s1 = this->curr_instr->get_s1(); - s2 = this->curr_instr->get_s2(); - s3 = this->curr_instr->get_s3(); - - this->instr_map[m](s1, s2, s3); - - this->curr_instr->set_s1(s1); - this->status = OK; - } + m = this->curr_instr->get_mnemonic(); + s1 = this->curr_instr->get_s1(); + s2 = this->curr_instr->get_s2(); + s3 = this->curr_instr->get_s3(); + + this->instr_map[m](s1, s2, s3); + + this->curr_instr->set_s1(s1); + this->status = OK; } diff --git a/src/sim/stage.cc b/src/sim/stage.cc index 5b81e4c..11eb822 100644 --- a/src/sim/stage.cc +++ b/src/sim/stage.cc @@ -34,8 +34,9 @@ InstrDTO *Stage::advance(Response p) InstrDTO *r = nullptr; Response n; - this->advance_helper(); - if (this->curr_instr != nullptr && p == OK) { + if (this->curr_instr && this->status != OK) + this->advance_helper(); + if (this->curr_instr && p == OK) { // mutual consent this->curr_instr->set_time_of(this->id, this->clock_cycle); r = new InstrDTO(*this->curr_instr); -- cgit v1.2.3