Gabe Black has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/49709 )
Change subject: cpu-simple: Ignore writes to the "zero" register.
......................................................................
cpu-simple: Ignore writes to the "zero" register.
Rather than constantly overwriting the "zero" register to return its
value to zero, just ignore writes to it.
We assume here that the "zero" register is a standard RegVal type
register (ie not bigger than 64 bits) and is accessed as such.
Change-Id: I06029b78103019c668647569c6037ca64a4d9c76
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49709
Maintainer: Gabe Black <[email protected]>
Reviewed-by: Giacomo Travaglini <[email protected]>
Tested-by: kokoro <[email protected]>
---
M src/cpu/minor/exec_context.hh
M src/cpu/simple/base.cc
M src/cpu/simple_thread.hh
3 files changed, 25 insertions(+), 4 deletions(-)
Approvals:
Giacomo Travaglini: Looks good to me, approved
Gabe Black: Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/cpu/minor/exec_context.hh b/src/cpu/minor/exec_context.hh
index 0c01793..43dad26 100644
--- a/src/cpu/minor/exec_context.hh
+++ b/src/cpu/minor/exec_context.hh
@@ -97,7 +97,6 @@
pcState(*inst->pc);
setPredicate(inst->readPredicate());
setMemAccPredicate(inst->readMemAccPredicate());
- thread.setIntReg(zeroReg, 0);
}
~ExecContext()
diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc
index 4cc8e1f..6db8025 100644
--- a/src/cpu/simple/base.cc
+++ b/src/cpu/simple/base.cc
@@ -307,9 +307,6 @@
SimpleExecContext &t_info = *threadInfo[curThread];
SimpleThread* thread = t_info.thread;
- // maintain $r0 semantics
- thread->setIntReg(zeroReg, 0);
-
// resets predicates
t_info.setPredicate(true);
t_info.setMemAccPredicate(true);
diff --git a/src/cpu/simple_thread.hh b/src/cpu/simple_thread.hh
index 73c75ff..c2e620c 100644
--- a/src/cpu/simple_thread.hh
+++ b/src/cpu/simple_thread.hh
@@ -405,6 +405,9 @@
auto ®_file = regFiles[reg.classValue()];
const auto ®_class = reg_file.regClass;
+ if (reg.index() == reg_class.zeroReg())
+ return;
+
DPRINTFV(reg_class.debug(), "Setting %s register %s (%d)
to %#x.\n",
reg.className(), reg_class.regName(arch_reg), idx, val);
reg_file.reg(idx) = val;
@@ -418,6 +421,9 @@
auto ®_file = regFiles[reg.classValue()];
const auto ®_class = reg_file.regClass;
+ if (reg.index() == reg_class.zeroReg())
+ return;
+
DPRINTFV(reg_class.debug(), "Setting %s register %d to %#x.\n",
reg.className(), idx, val);
reg_file.reg(idx) = val;
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/49709
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I06029b78103019c668647569c6037ca64a4d9c76
Gerrit-Change-Number: 49709
Gerrit-PatchSet: 53
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Gabe Black <[email protected]>
Gerrit-Reviewer: Giacomo Travaglini <[email protected]>
Gerrit-Reviewer: Jason Lowe-Power <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s