From 25ce77db5f0dbfe6064eb0553591f1b956bad24a Mon Sep 17 00:00:00 2001 From: bd Date: Tue, 1 Apr 2025 15:57:14 -0400 Subject: Fix a lot of pipeline bugs --- src/sim/id.cc | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'src/sim/id.cc') 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); + } } } -- cgit v1.2.3