summaryrefslogtreecommitdiff
path: root/src/cpu/minor/dyn_inst.cc
diff options
context:
space:
mode:
authorNathanael Premillieu <nathanael.premillieu@arm.com>2017-04-05 12:46:06 -0500
committerAndreas Sandberg <andreas.sandberg@arm.com>2017-07-05 14:43:49 +0000
commit5e8287d2e2eaf058495442ea9e32fafc343a0b53 (patch)
tree7d0891b8984926f8e404d6ca8247f45695f9fc9b /src/cpu/minor/dyn_inst.cc
parent864f87f9c56a66dceeca0f4e9470fbaa3001b627 (diff)
downloadgem5-5e8287d2e2eaf058495442ea9e32fafc343a0b53.tar.xz
arch, cpu: Architectural Register structural indexing
Replace the unified register mapping with a structure associating a class and an index. It is now much easier to know which class of register the index is referring to. Also, when adding a new class there is no need to modify existing ones. Change-Id: I55b3ac80763702aa2cd3ed2cbff0a75ef7620373 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> [ Fix RISCV build issues ] Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/2700
Diffstat (limited to 'src/cpu/minor/dyn_inst.cc')
-rw-r--r--src/cpu/minor/dyn_inst.cc14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/cpu/minor/dyn_inst.cc b/src/cpu/minor/dyn_inst.cc
index 16af15bd7..42c370a70 100644
--- a/src/cpu/minor/dyn_inst.cc
+++ b/src/cpu/minor/dyn_inst.cc
@@ -133,15 +133,15 @@ operator <<(std::ostream &os, const MinorDynInst &inst)
/** Print a register in the form r<n>, f<n>, m<n>(<name>), z for integer,
* float, misc and zero registers given an 'architectural register number' */
static void
-printRegName(std::ostream &os, TheISA::RegIndex reg)
+printRegName(std::ostream &os, RegId reg)
{
- RegClass reg_class = regIdxToClass(reg);
+ RegClass reg_class = reg.regClass;
switch (reg_class)
{
case MiscRegClass:
{
- TheISA::RegIndex misc_reg = reg - TheISA::Misc_Reg_Base;
+ RegIndex misc_reg = reg.regIdx;
/* This is an ugly test because not all archs. have miscRegName */
#if THE_ISA == ARM_ISA
@@ -153,17 +153,17 @@ printRegName(std::ostream &os, TheISA::RegIndex reg)
}
break;
case FloatRegClass:
- os << 'f' << static_cast<unsigned int>(reg - TheISA::FP_Reg_Base);
+ os << 'f' << static_cast<unsigned int>(reg.regIdx);
break;
case IntRegClass:
- if (reg == TheISA::ZeroReg) {
+ if (reg.isZeroReg()) {
os << 'z';
} else {
- os << 'r' << static_cast<unsigned int>(reg);
+ os << 'r' << static_cast<unsigned int>(reg.regIdx);
}
break;
case CCRegClass:
- os << 'c' << static_cast<unsigned int>(reg - TheISA::CC_Reg_Base);
+ os << 'c' << static_cast<unsigned int>(reg.regIdx);
}
}