summaryrefslogtreecommitdiff
path: root/src/sim/wb.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/wb.cc')
-rw-r--r--src/sim/wb.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/sim/wb.cc b/src/sim/wb.cc
index 08e5ed3..c62468c 100644
--- a/src/sim/wb.cc
+++ b/src/sim/wb.cc
@@ -28,16 +28,17 @@ void WB::write_handler()
throw std::runtime_error("instruction tried to pop a register out of "
"an empty queue during writeback.");
- this->checked_out.pop_front();
- reg = this->curr_instr->get_checked_out();
- this->store_register(reg, this->curr_instr->get_s1());
-
if (this->curr_instr->get_mnemonic() == POP) {
// POP performs a second register write
reg = this->checked_out.front();
this->checked_out.pop_front();
this->store_register(reg, this->curr_instr->get_s3());
}
+
+ this->checked_out.pop_front();
+ reg = this->curr_instr->get_checked_out();
+ this->store_register(reg, this->curr_instr->get_s1());
+
}
void WB::jump_handler()