aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/core.cpp
diff options
context:
space:
mode:
authorPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-12 23:18:27 +0100
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2019-02-12 23:18:27 +0100
commite8136120d2229ee06354a9efe942ba7edc3cfbdc (patch)
treea978a06b92e21b701a6ceb1a294dd4d205f09337 /qtmips_machine/core.cpp
parentb67d168951e289a7a4ecd9ef50f9c84e9767ecda (diff)
downloadqtmips-e8136120d2229ee06354a9efe942ba7edc3cfbdc.tar.gz
qtmips-e8136120d2229ee06354a9efe942ba7edc3cfbdc.tar.bz2
qtmips-e8136120d2229ee06354a9efe942ba7edc3cfbdc.zip
Add signals and multiplexers for ALU inputs forwarding.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
Diffstat (limited to 'qtmips_machine/core.cpp')
-rw-r--r--qtmips_machine/core.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/qtmips_machine/core.cpp b/qtmips_machine/core.cpp
index e744848..5c8d8f3 100644
--- a/qtmips_machine/core.cpp
+++ b/qtmips_machine/core.cpp
@@ -591,11 +591,11 @@ void CorePipelined::do_step(bool skip_break) {
// Forward result value
if (dt_d.alu_req_rs && dt_m.rwrite == dt_d.inst.rs()) {
dt_d.val_rs = dt_m.towrite_val;
- dt_d.ff_rs = FORWARD_FROM_M;
+ dt_d.ff_rs = FORWARD_FROM_W;
}
if (dt_d.alu_req_rt && dt_m.rwrite == dt_d.inst.rt()) {
dt_d.val_rt = dt_m.towrite_val;
- dt_d.ff_rt = FORWARD_FROM_M;
+ dt_d.ff_rt = FORWARD_FROM_W;
}
} else
stall = true;
@@ -609,11 +609,11 @@ void CorePipelined::do_step(bool skip_break) {
// Forward result value
if (dt_d.alu_req_rs && dt_e.rwrite == dt_d.inst.rs()) {
dt_d.val_rs = dt_e.alu_val;
- dt_d.ff_rs = FORWARD_FROM_W;
+ dt_d.ff_rs = FORWARD_FROM_M;
}
if (dt_d.alu_req_rt && dt_e.rwrite == dt_d.inst.rt()) {
dt_d.val_rt = dt_e.alu_val;
- dt_d.ff_rt = FORWARD_FROM_W;
+ dt_d.ff_rt = FORWARD_FROM_M;
}
}
} else