summaryrefslogtreecommitdiff
path: root/src/sim/id.cc
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-04-01 15:57:14 -0400
committerbd <bdunahu@operationnull.com>2025-04-01 15:57:14 -0400
commit25ce77db5f0dbfe6064eb0553591f1b956bad24a (patch)
tree5a1c347f05f14496d2d3a2f1befd88be9020cad3 /src/sim/id.cc
parent6579f7272905d1e25b43ef051da6c2180e60ca2b (diff)
Fix a lot of pipeline bugs
Diffstat (limited to 'src/sim/id.cc')
-rw-r--r--src/sim/id.cc20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/sim/id.cc b/src/sim/id.cc
index 4a55d04..ddac35b 100644
--- a/src/sim/id.cc
+++ b/src/sim/id.cc
@@ -48,14 +48,18 @@ void ID::advance_helper()
Mnemonic m;
Type t;
- s1 = curr_instr->get_instr_bits();
- get_instr_fields(s1, s2, s3, m, t);
- if (this->status == OK) {
- curr_instr->set_s1(s1);
- curr_instr->set_s2(s2);
- curr_instr->set_s3(s3);
- curr_instr->set_mnemonic(m);
- curr_instr->set_type(t);
+ if (curr_instr->get_mnemonic() == NOP)
+ this->status = OK;
+ else {
+ s1 = curr_instr->get_instr_bits();
+ get_instr_fields(s1, s2, s3, m, t);
+ if (this->status == OK) {
+ curr_instr->set_s1(s1);
+ curr_instr->set_s2(s2);
+ curr_instr->set_s3(s3);
+ curr_instr->set_mnemonic(m);
+ curr_instr->set_type(t);
+ }
}
}