Gabe Black has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/49696 )
(
50 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the
submitted one.
)Change subject: cpu,arch: Attach a debug flag to each RegClass.
......................................................................
cpu,arch: Attach a debug flag to each RegClass.
This can be used for DPRINTFs related to those registers using DPRINTFV.
Change-Id: I0fccb12b70fdb74e01022fe0d3d9c2f92425a5bf
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/49696
Tested-by: kokoro <[email protected]>
Reviewed-by: Giacomo Travaglini <[email protected]>
Maintainer: Giacomo Travaglini <[email protected]>
---
M src/arch/arm/isa.cc
M src/arch/mips/isa.cc
M src/arch/power/isa.cc
M src/arch/riscv/isa.cc
M src/arch/sparc/isa.cc
M src/arch/x86/isa.cc
M src/cpu/reg_class.hh
7 files changed, 87 insertions(+), 48 deletions(-)
Approvals:
Giacomo Travaglini: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc
index 0db133b..b591255 100644
--- a/src/arch/arm/isa.cc
+++ b/src/arch/arm/isa.cc
@@ -54,8 +54,13 @@
#include "cpu/checker/cpu.hh"
#include "cpu/reg_class.hh"
#include "debug/Arm.hh"
+#include "debug/CCRegs.hh"
+#include "debug/FloatRegs.hh"
+#include "debug/IntRegs.hh"
#include "debug/LLSC.hh"
#include "debug/MiscRegs.hh"
+#include "debug/VecPredRegs.hh"
+#include "debug/VecRegs.hh"
#include "dev/arm/generic_timer.hh"
#include "dev/arm/gic_v3.hh"
#include "dev/arm/gic_v3_cpu_interface.hh"
@@ -88,16 +93,16 @@
_decoderFlavor(p.decoderFlavor), pmu(p.pmu), impdefAsNop(p.impdef_nop),
afterStartup(false)
{
- _regClasses.emplace_back(NUM_INTREGS, INTREG_ZERO);
- _regClasses.emplace_back(0);
- _regClasses.emplace_back(NumVecRegs, vecRegClassOps, -1,
+ _regClasses.emplace_back(NUM_INTREGS, debug::IntRegs, INTREG_ZERO);
+ _regClasses.emplace_back(0, debug::FloatRegs);
+ _regClasses.emplace_back(NumVecRegs, vecRegClassOps, debug::VecRegs,
-1,
sizeof(VecRegContainer));
_regClasses.emplace_back(NumVecRegs * NumVecElemPerVecReg,
- vecRegElemClassOps);
- _regClasses.emplace_back(NumVecPredRegs, vecPredRegClassOps, -1,
- sizeof(VecPredRegContainer));
- _regClasses.emplace_back(NUM_CCREGS);
- _regClasses.emplace_back(NUM_MISCREGS, miscRegClassOps);
+ vecRegElemClassOps, debug::VecRegs);
+ _regClasses.emplace_back(NumVecPredRegs, vecPredRegClassOps,
+ debug::VecPredRegs, -1, sizeof(VecPredRegContainer));
+ _regClasses.emplace_back(NUM_CCREGS, debug::CCRegs);
+ _regClasses.emplace_back(NUM_MISCREGS, miscRegClassOps,
debug::MiscRegs);
miscRegs[MISCREG_SCTLR_RST] = 0;
diff --git a/src/arch/mips/isa.cc b/src/arch/mips/isa.cc
index 2a075ec..66348a4 100644
--- a/src/arch/mips/isa.cc
+++ b/src/arch/mips/isa.cc
@@ -38,7 +38,10 @@
#include "cpu/base.hh"
#include "cpu/reg_class.hh"
#include "cpu/thread_context.hh"
+#include "debug/FloatRegs.hh"
+#include "debug/IntRegs.hh"
#include "debug/MipsPRA.hh"
+#include "debug/MiscRegs.hh"
#include "params/MipsISA.hh"
namespace gem5
@@ -97,13 +100,13 @@
ISA::ISA(const Params &p) : BaseISA(p), numThreads(p.num_threads),
numVpes(p.num_vpes)
{
- _regClasses.emplace_back(NumIntRegs, 0);
- _regClasses.emplace_back(NumFloatRegs);
- _regClasses.emplace_back(1); // Not applicable to MIPS.
- _regClasses.emplace_back(2); // Not applicable to MIPS.
- _regClasses.emplace_back(1); // Not applicable to MIPS.
- _regClasses.emplace_back(0); // Not applicable to MIPS.
- _regClasses.emplace_back(MISCREG_NUMREGS);
+ _regClasses.emplace_back(NumIntRegs, debug::IntRegs, 0);
+ _regClasses.emplace_back(NumFloatRegs, debug::FloatRegs);
+ _regClasses.emplace_back(1, debug::IntRegs); // Not applicable to MIPS.
+ _regClasses.emplace_back(2, debug::IntRegs); // Not applicable to MIPS.
+ _regClasses.emplace_back(1, debug::IntRegs); // Not applicable to MIPS.
+ _regClasses.emplace_back(0, debug::IntRegs); // Not applicable to MIPS.
+ _regClasses.emplace_back(MISCREG_NUMREGS, debug::MiscRegs);
miscRegFile.resize(MISCREG_NUMREGS);
bankType.resize(MISCREG_NUMREGS);
diff --git a/src/arch/power/isa.cc b/src/arch/power/isa.cc
index 086369f..4cf7b39 100644
--- a/src/arch/power/isa.cc
+++ b/src/arch/power/isa.cc
@@ -41,6 +41,9 @@
#include "arch/power/regs/int.hh"
#include "arch/power/regs/misc.hh"
#include "cpu/thread_context.hh"
+#include "debug/FloatRegs.hh"
+#include "debug/IntRegs.hh"
+#include "debug/MiscRegs.hh"
#include "params/PowerISA.hh"
namespace gem5
@@ -51,13 +54,13 @@
ISA::ISA(const Params &p) : BaseISA(p)
{
- _regClasses.emplace_back(NumIntRegs, NumIntRegs - 1);
- _regClasses.emplace_back(NumFloatRegs);
- _regClasses.emplace_back(1);
- _regClasses.emplace_back(2);
- _regClasses.emplace_back(1);
- _regClasses.emplace_back(0);
- _regClasses.emplace_back(NUM_MISCREGS);
+ _regClasses.emplace_back(NumIntRegs, debug::IntRegs, NumIntRegs - 1);
+ _regClasses.emplace_back(NumFloatRegs, debug::FloatRegs);
+ _regClasses.emplace_back(1, debug::IntRegs);
+ _regClasses.emplace_back(2, debug::IntRegs);
+ _regClasses.emplace_back(1, debug::IntRegs);
+ _regClasses.emplace_back(0, debug::IntRegs);
+ _regClasses.emplace_back(NUM_MISCREGS, debug::MiscRegs);
clear();
}
diff --git a/src/arch/riscv/isa.cc b/src/arch/riscv/isa.cc
index 32cba39..f9d7ba1 100644
--- a/src/arch/riscv/isa.cc
+++ b/src/arch/riscv/isa.cc
@@ -47,7 +47,10 @@
#include "base/trace.hh"
#include "cpu/base.hh"
#include "debug/Checkpoint.hh"
+#include "debug/FloatRegs.hh"
+#include "debug/IntRegs.hh"
#include "debug/LLSC.hh"
+#include "debug/MiscRegs.hh"
#include "debug/RiscvMisc.hh"
#include "mem/packet.hh"
#include "mem/request.hh"
@@ -193,13 +196,13 @@
ISA::ISA(const Params &p) : BaseISA(p)
{
- _regClasses.emplace_back(NumIntRegs, 0);
- _regClasses.emplace_back(NumFloatRegs);
- _regClasses.emplace_back(1); // Not applicable to RISCV
- _regClasses.emplace_back(2); // Not applicable to RISCV
- _regClasses.emplace_back(1); // Not applicable to RISCV
- _regClasses.emplace_back(0); // Not applicable to RISCV
- _regClasses.emplace_back(NUM_MISCREGS);
+ _regClasses.emplace_back(NumIntRegs, debug::IntRegs, 0);
+ _regClasses.emplace_back(NumFloatRegs, debug::FloatRegs);
+ _regClasses.emplace_back(1, debug::IntRegs); // Not applicable to RISCV
+ _regClasses.emplace_back(2, debug::IntRegs); // Not applicable to RISCV
+ _regClasses.emplace_back(1, debug::IntRegs); // Not applicable to RISCV
+ _regClasses.emplace_back(0, debug::IntRegs); // Not applicable to RISCV
+ _regClasses.emplace_back(NUM_MISCREGS, debug::MiscRegs);
miscRegFile.resize(NUM_MISCREGS);
clear();
diff --git a/src/arch/sparc/isa.cc b/src/arch/sparc/isa.cc
index 2debbc5..0ee2314 100644
--- a/src/arch/sparc/isa.cc
+++ b/src/arch/sparc/isa.cc
@@ -39,6 +39,8 @@
#include "base/trace.hh"
#include "cpu/base.hh"
#include "cpu/thread_context.hh"
+#include "debug/FloatRegs.hh"
+#include "debug/IntRegs.hh"
#include "debug/MiscRegs.hh"
#include "debug/Timer.hh"
#include "params/SparcISA.hh"
@@ -68,13 +70,13 @@
ISA::ISA(const Params &p) : BaseISA(p)
{
- _regClasses.emplace_back(NumIntRegs, 0);
- _regClasses.emplace_back(NumFloatRegs);
- _regClasses.emplace_back(1); // Not applicable for SPARC
- _regClasses.emplace_back(2); // Not applicable for SPARC
- _regClasses.emplace_back(1); // Not applicable for SPARC
- _regClasses.emplace_back(0); // Not applicable for SPARC
- _regClasses.emplace_back(NumMiscRegs);
+ _regClasses.emplace_back(NumIntRegs, debug::IntRegs, 0);
+ _regClasses.emplace_back(NumFloatRegs, debug::FloatRegs);
+ _regClasses.emplace_back(1, debug::IntRegs); // Not applicable for
SPARC
+ _regClasses.emplace_back(2, debug::IntRegs); // Not applicable for
SPARC
+ _regClasses.emplace_back(1, debug::IntRegs); // Not applicable for
SPARC
+ _regClasses.emplace_back(0, debug::IntRegs); // Not applicable for
SPARC
+ _regClasses.emplace_back(NumMiscRegs, debug::MiscRegs);
clear();
}
diff --git a/src/arch/x86/isa.cc b/src/arch/x86/isa.cc
index 89e0d29..713346e 100644
--- a/src/arch/x86/isa.cc
+++ b/src/arch/x86/isa.cc
@@ -36,6 +36,10 @@
#include "base/compiler.hh"
#include "cpu/base.hh"
#include "cpu/thread_context.hh"
+#include "debug/CCRegs.hh"
+#include "debug/FloatRegs.hh"
+#include "debug/IntRegs.hh"
+#include "debug/MiscRegs.hh"
#include "params/X86ISA.hh"
#include "sim/serialize.hh"
@@ -142,13 +146,13 @@
fatal_if(vendorString.size() != 12,
"CPUID vendor string must be 12 characters\n");
- _regClasses.emplace_back(NumIntRegs, INTREG_T0);
- _regClasses.emplace_back(NumFloatRegs);
- _regClasses.emplace_back(1); // Not applicable to X86
- _regClasses.emplace_back(2); // Not applicable to X86
- _regClasses.emplace_back(1); // Not applicable to X86
- _regClasses.emplace_back(NUM_CCREGS);
- _regClasses.emplace_back(NUM_MISCREGS);
+ _regClasses.emplace_back(NumIntRegs, debug::IntRegs, INTREG_T0);
+ _regClasses.emplace_back(NumFloatRegs, debug::FloatRegs);
+ _regClasses.emplace_back(1, debug::IntRegs); // Not applicable to X86
+ _regClasses.emplace_back(2, debug::IntRegs); // Not applicable to X86
+ _regClasses.emplace_back(1, debug::IntRegs); // Not applicable to X86
+ _regClasses.emplace_back(NUM_CCREGS, debug::CCRegs);
+ _regClasses.emplace_back(NUM_MISCREGS, debug::MiscRegs);
clear();
}
diff --git a/src/cpu/reg_class.hh b/src/cpu/reg_class.hh
index e9e54da..ed1683a 100644
--- a/src/cpu/reg_class.hh
+++ b/src/cpu/reg_class.hh
@@ -45,6 +45,7 @@
#include <string>
#include "base/cprintf.hh"
+#include "base/debug.hh"
#include "base/intmath.hh"
#include "base/types.hh"
@@ -89,16 +90,18 @@
static inline RegClassOps defaultOps;
RegClassOps *_ops = &defaultOps;
+ const debug::Flag &debugFlag;
public:
- RegClass(size_t num_regs, RegIndex new_zero=-1,
- size_t reg_bytes=sizeof(RegVal)) :
+ RegClass(size_t num_regs, const debug::Flag &debug_flag,
+ RegIndex new_zero=-1, size_t reg_bytes=sizeof(RegVal)) :
_numRegs(num_regs), _zeroReg(new_zero), _regBytes(reg_bytes),
- _regShift(ceilLog2(reg_bytes))
+ _regShift(ceilLog2(reg_bytes)), debugFlag(debug_flag)
{}
- RegClass(size_t num_regs, RegClassOps &new_ops, RegIndex new_zero=-1,
+ RegClass(size_t num_regs, RegClassOps &new_ops,
+ const debug::Flag &debug_flag, RegIndex new_zero=-1,
size_t reg_bytes=sizeof(RegVal)) :
- RegClass(num_regs, new_zero, reg_bytes)
+ RegClass(num_regs, debug_flag, new_zero, reg_bytes)
{
_ops = &new_ops;
}
@@ -107,6 +110,7 @@
RegIndex zeroReg() const { return _zeroReg; }
size_t regBytes() const { return _regBytes; }
size_t regShift() const { return _regShift; }
+ const debug::Flag &debug() const { return debugFlag; }
std::string regName(const RegId &id) const { return _ops->regName(id);
}
std::string
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/49696
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: I0fccb12b70fdb74e01022fe0d3d9c2f92425a5bf
Gerrit-Change-Number: 49696
Gerrit-PatchSet: 52
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Boris Shingarov <[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