summaryrefslogtreecommitdiff
path: root/src/cpu/checker/cpu.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/checker/cpu.hh')
-rw-r--r--src/cpu/checker/cpu.hh135
1 files changed, 76 insertions, 59 deletions
diff --git a/src/cpu/checker/cpu.hh b/src/cpu/checker/cpu.hh
index 5673641aa..2c7e022bd 100644
--- a/src/cpu/checker/cpu.hh
+++ b/src/cpu/checker/cpu.hh
@@ -88,9 +88,6 @@ class CheckerCPU : public BaseCPU, public ExecContext
{
protected:
typedef TheISA::MachInst MachInst;
- typedef TheISA::FloatReg FloatReg;
- typedef TheISA::FloatRegBits FloatRegBits;
- typedef TheISA::MiscReg MiscReg;
using VecRegContainer = TheISA::VecRegContainer;
/** id attached to all issued requests */
@@ -189,15 +186,16 @@ class CheckerCPU : public BaseCPU, public ExecContext
// storage (which is pretty hard to imagine they would have reason
// to do).
- IntReg readIntRegOperand(const StaticInst *si, int idx) override
+ RegVal
+ readIntRegOperand(const StaticInst *si, int idx) override
{
const RegId& reg = si->srcRegIdx(idx);
assert(reg.isIntReg());
return thread->readIntReg(reg.index());
}
- FloatRegBits readFloatRegOperandBits(const StaticInst *si,
- int idx) override
+ RegVal
+ readFloatRegOperandBits(const StaticInst *si, int idx) override
{
const RegId& reg = si->srcRegIdx(idx);
assert(reg.isFloatReg());
@@ -207,8 +205,8 @@ class CheckerCPU : public BaseCPU, public ExecContext
/**
* Read source vector register operand.
*/
- const VecRegContainer& readVecRegOperand(const StaticInst *si,
- int idx) const override
+ const VecRegContainer &
+ readVecRegOperand(const StaticInst *si, int idx) const override
{
const RegId& reg = si->srcRegIdx(idx);
assert(reg.isVecReg());
@@ -218,8 +216,8 @@ class CheckerCPU : public BaseCPU, public ExecContext
/**
* Read destination vector register operand for modification.
*/
- VecRegContainer& getWritableVecRegOperand(const StaticInst *si,
- int idx) override
+ VecRegContainer &
+ getWritableVecRegOperand(const StaticInst *si, int idx) override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isVecReg());
@@ -230,8 +228,7 @@ class CheckerCPU : public BaseCPU, public ExecContext
/** @{ */
/** Reads source vector 8bit operand. */
virtual ConstVecLane8
- readVec8BitLaneOperand(const StaticInst *si, int idx) const
- override
+ readVec8BitLaneOperand(const StaticInst *si, int idx) const override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isVecReg());
@@ -240,8 +237,7 @@ class CheckerCPU : public BaseCPU, public ExecContext
/** Reads source vector 16bit operand. */
virtual ConstVecLane16
- readVec16BitLaneOperand(const StaticInst *si, int idx) const
- override
+ readVec16BitLaneOperand(const StaticInst *si, int idx) const override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isVecReg());
@@ -250,8 +246,7 @@ class CheckerCPU : public BaseCPU, public ExecContext
/** Reads source vector 32bit operand. */
virtual ConstVecLane32
- readVec32BitLaneOperand(const StaticInst *si, int idx) const
- override
+ readVec32BitLaneOperand(const StaticInst *si, int idx) const override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isVecReg());
@@ -260,8 +255,7 @@ class CheckerCPU : public BaseCPU, public ExecContext
/** Reads source vector 64bit operand. */
virtual ConstVecLane64
- readVec64BitLaneOperand(const StaticInst *si, int idx) const
- override
+ readVec64BitLaneOperand(const StaticInst *si, int idx) const override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isVecReg());
@@ -303,13 +297,15 @@ class CheckerCPU : public BaseCPU, public ExecContext
}
/** @} */
- VecElem readVecElemOperand(const StaticInst *si, int idx) const override
+ VecElem
+ readVecElemOperand(const StaticInst *si, int idx) const override
{
const RegId& reg = si->srcRegIdx(idx);
return thread->readVecElem(reg);
}
- CCReg readCCRegOperand(const StaticInst *si, int idx) override
+ CCReg
+ readCCRegOperand(const StaticInst *si, int idx) override
{
const RegId& reg = si->srcRegIdx(idx);
assert(reg.isCCReg());
@@ -317,28 +313,31 @@ class CheckerCPU : public BaseCPU, public ExecContext
}
template<typename T>
- void setScalarResult(T&& t)
+ void
+ setScalarResult(T&& t)
{
result.push(InstResult(std::forward<T>(t),
- InstResult::ResultType::Scalar));
+ InstResult::ResultType::Scalar));
}
template<typename T>
- void setVecResult(T&& t)
+ void
+ setVecResult(T&& t)
{
result.push(InstResult(std::forward<T>(t),
- InstResult::ResultType::VecReg));
+ InstResult::ResultType::VecReg));
}
template<typename T>
- void setVecElemResult(T&& t)
+ void
+ setVecElemResult(T&& t)
{
result.push(InstResult(std::forward<T>(t),
- InstResult::ResultType::VecElem));
+ InstResult::ResultType::VecElem));
}
- void setIntRegOperand(const StaticInst *si, int idx,
- IntReg val) override
+ void
+ setIntRegOperand(const StaticInst *si, int idx, RegVal val) override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isIntReg());
@@ -346,8 +345,8 @@ class CheckerCPU : public BaseCPU, public ExecContext
setScalarResult(val);
}
- void setFloatRegOperandBits(const StaticInst *si, int idx,
- FloatRegBits val) override
+ void
+ setFloatRegOperandBits(const StaticInst *si, int idx, RegVal val) override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isFloatReg());
@@ -355,7 +354,8 @@ class CheckerCPU : public BaseCPU, public ExecContext
setScalarResult(val);
}
- void setCCRegOperand(const StaticInst *si, int idx, CCReg val) override
+ void
+ setCCRegOperand(const StaticInst *si, int idx, CCReg val) override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isCCReg());
@@ -363,8 +363,9 @@ class CheckerCPU : public BaseCPU, public ExecContext
setScalarResult((uint64_t)val);
}
- void setVecRegOperand(const StaticInst *si, int idx,
- const VecRegContainer& val) override
+ void
+ setVecRegOperand(const StaticInst *si, int idx,
+ const VecRegContainer& val) override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isVecReg());
@@ -372,8 +373,9 @@ class CheckerCPU : public BaseCPU, public ExecContext
setVecResult(val);
}
- void setVecElemOperand(const StaticInst *si, int idx,
- const VecElem val) override
+ void
+ setVecElemOperand(const StaticInst *si, int idx,
+ const VecElem val) override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isVecElem());
@@ -383,13 +385,15 @@ class CheckerCPU : public BaseCPU, public ExecContext
bool readPredicate() const override { return thread->readPredicate(); }
- void setPredicate(bool val) override
+ void
+ setPredicate(bool val) override
{
thread->setPredicate(val);
}
TheISA::PCState pcState() const override { return thread->pcState(); }
- void pcState(const TheISA::PCState &val) override
+ void
+ pcState(const TheISA::PCState &val) override
{
DPRINTF(Checker, "Changing PC to %s, old PC %s.\n",
val, thread->pcState());
@@ -400,39 +404,47 @@ class CheckerCPU : public BaseCPU, public ExecContext
MicroPC microPC() { return thread->microPC(); }
//////////////////////////////////////////
- MiscReg readMiscRegNoEffect(int misc_reg) const
+ RegVal
+ readMiscRegNoEffect(int misc_reg) const
{
return thread->readMiscRegNoEffect(misc_reg);
}
- MiscReg readMiscReg(int misc_reg) override
+ RegVal
+ readMiscReg(int misc_reg) override
{
return thread->readMiscReg(misc_reg);
}
- void setMiscRegNoEffect(int misc_reg, const MiscReg &val)
+ void
+ setMiscRegNoEffect(int misc_reg, const RegVal &val)
{
- DPRINTF(Checker, "Setting misc reg %d with no effect to check later\n", misc_reg);
+ DPRINTF(Checker, "Setting misc reg %d with no effect to check later\n",
+ misc_reg);
miscRegIdxs.push(misc_reg);
return thread->setMiscRegNoEffect(misc_reg, val);
}
- void setMiscReg(int misc_reg, const MiscReg &val) override
+ void
+ setMiscReg(int misc_reg, const RegVal &val) override
{
- DPRINTF(Checker, "Setting misc reg %d with effect to check later\n", misc_reg);
+ DPRINTF(Checker, "Setting misc reg %d with effect to check later\n",
+ misc_reg);
miscRegIdxs.push(misc_reg);
return thread->setMiscReg(misc_reg, val);
}
- MiscReg readMiscRegOperand(const StaticInst *si, int idx) override
+ RegVal
+ readMiscRegOperand(const StaticInst *si, int idx) override
{
const RegId& reg = si->srcRegIdx(idx);
assert(reg.isMiscReg());
return thread->readMiscReg(reg.index());
}
- void setMiscRegOperand(const StaticInst *si, int idx,
- const MiscReg &val) override
+ void
+ setMiscRegOperand(const StaticInst *si, int idx,
+ const RegVal &val) override
{
const RegId& reg = si->destRegIdx(idx);
assert(reg.isMiscReg());
@@ -440,14 +452,15 @@ class CheckerCPU : public BaseCPU, public ExecContext
}
#if THE_ISA == MIPS_ISA
- MiscReg readRegOtherThread(const RegId& misc_reg, ThreadID tid) override
+ RegVal
+ readRegOtherThread(const RegId &misc_reg, ThreadID tid) override
{
panic("MIPS MT not defined for CheckerCPU.\n");
return 0;
}
- void setRegOtherThread(const RegId& misc_reg, MiscReg val,
- ThreadID tid) override
+ void
+ setRegOtherThread(const RegId& misc_reg, RegVal val, ThreadID tid) override
{
panic("MIPS MT not defined for CheckerCPU.\n");
}
@@ -455,33 +468,36 @@ class CheckerCPU : public BaseCPU, public ExecContext
/////////////////////////////////////////
- void recordPCChange(const TheISA::PCState &val)
+ void
+ recordPCChange(const TheISA::PCState &val)
{
changedPC = true;
newPCState = val;
}
- void demapPage(Addr vaddr, uint64_t asn) override
+ void
+ demapPage(Addr vaddr, uint64_t asn) override
{
this->itb->demapPage(vaddr, asn);
this->dtb->demapPage(vaddr, asn);
}
// monitor/mwait funtions
- void armMonitor(Addr address) override
- { BaseCPU::armMonitor(0, address); }
+ void armMonitor(Addr address) override { BaseCPU::armMonitor(0, address); }
bool mwait(PacketPtr pkt) override { return BaseCPU::mwait(0, pkt); }
void mwaitAtomic(ThreadContext *tc) override
{ return BaseCPU::mwaitAtomic(0, tc, thread->dtb); }
AddressMonitor *getAddrMonitor() override
{ return BaseCPU::getCpuAddrMonitor(0); }
- void demapInstPage(Addr vaddr, uint64_t asn)
+ void
+ demapInstPage(Addr vaddr, uint64_t asn)
{
this->itb->demapPage(vaddr, asn);
}
- void demapDataPage(Addr vaddr, uint64_t asn)
+ void
+ demapDataPage(Addr vaddr, uint64_t asn)
{
this->dtb->demapPage(vaddr, asn);
}
@@ -491,12 +507,12 @@ class CheckerCPU : public BaseCPU, public ExecContext
Fault writeMem(uint8_t *data, unsigned size, Addr addr,
Request::Flags flags, uint64_t *res) override;
- unsigned int readStCondFailures() const override {
+ unsigned int
+ readStCondFailures() const override {
return thread->readStCondFailures();
}
- void setStCondFailures(unsigned int sc_failures) override
- {}
+ void setStCondFailures(unsigned int sc_failures) override {}
/////////////////////////////////////////////////////
Fault hwrei() override { return thread->hwrei(); }
@@ -507,7 +523,8 @@ class CheckerCPU : public BaseCPU, public ExecContext
// The checker's state would have already been updated by the syscall.
void syscall(int64_t callnum, Fault *fault) override { }
- void handleError()
+ void
+ handleError()
{
if (exitOnError)
dumpAndExit();