summaryrefslogtreecommitdiff
path: root/src/id.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/id.cc')
-rw-r--r--src/id.cc8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/id.cc b/src/id.cc
index 12f509f..9547486 100644
--- a/src/id.cc
+++ b/src/id.cc
@@ -135,10 +135,16 @@ void ID::decode_R_type(signed int &s1)
this->write_guard<std::array<signed int, V_R_LIMIT>>(s3);
break;
case SRDL:
- case SRDS:
this->curr_instr->operands.s_vector.slot_three =
this->write_guard<std::array<signed int, V_R_LIMIT>>(s3);
break;
+ case SRDS:
+ r1 = this->read_guard<std::array<signed int, V_R_LIMIT>>(
+ s3, this->curr_instr->operands.s_vector.slot_three);
+ if (r1 != OK) {
+ this->status = STALLED;
+ }
+ break;
default:
this->curr_instr->operands.integer.slot_three =
this->write_guard<signed int>(s3);