44 #ifndef __CPU_CHECKER_CPU_HH__
45 #define __CPU_CHECKER_CPU_HH__
51 #include "arch/types.hh"
59 #include "debug/Checker.hh"
61 #include "params/CheckerCPU.hh"
102 void init()
override;
199 {
panic(
"CheckerCPU::setEA() not implemented\n"); }
201 {
panic(
"CheckerCPU::getEA() not implemented\n"); }
250 setResult<uint64_t>(
val);
258 setResult<double>(
val);
266 setResult<uint64_t>(
val);
273 setResult<uint64_t>(
val);
306 DPRINTF(
Checker,
"Setting misc reg %d with no effect to check later\n", misc_reg);
313 DPRINTF(
Checker,
"Setting misc reg %d with effect to check later\n", misc_reg);
331 #if THE_ISA == MIPS_ISA
334 panic(
"MIPS MT not defined for CheckerCPU.\n");
340 panic(
"MIPS MT not defined for CheckerCPU.\n");
354 this->
itb->demapPage(vaddr, asn);
355 this->
dtb->demapPage(vaddr, asn);
360 { BaseCPU::armMonitor(0, address); }
363 {
return BaseCPU::mwaitAtomic(0, tc,
thread->
dtb); }
365 {
return BaseCPU::getCpuAddrMonitor(0); }
369 this->
itb->demapPage(vaddr, asn);
374 this->
dtb->demapPage(vaddr, asn);
405 Addr pAddr,
int flags);
432 template <
class Impl>
478 #endif // __CPU_CHECKER_CPU_HH__
void setMiscRegOperand(const StaticInst *si, int idx, const MiscReg &val) override
bool simPalCheck(int palFunc) override
Check for special simulator handling of specific PAL calls.
Fault writeMem(uint8_t *data, unsigned size, Addr addr, Request::Flags flags, uint64_t *res) override
A MasterPort is a specialisation of a BaseMasterPort, which implements the default protocol for the t...
FloatReg readFloatRegOperand(const StaticInst *si, int idx) override
Reads a floating point register of single register width.
uint64_t readIntReg(int reg_idx)
void setMiscReg(int misc_reg, const MiscReg &val, ThreadID tid=0)
void setMiscReg(int misc_reg, const MiscReg &val) override
Sets a miscellaneous register, handling any architectural side effects due to writing that register...
void setPredicate(bool val) override
unsigned int readStCondFailures() const override
Returns the number of consecutive store conditional failures.
std::list< DynInstPtr >::iterator InstListIt
DynInstPtr unverifiedInst
void syscall(int64_t callnum, Fault *fault) override
Executes a syscall specified by the callnum.
Impl::DynInstPtr DynInstPtr
std::queue< int > miscRegIdxs
MasterPort & getInstPort() override
void wakeup(ThreadID tid) override
void validateInst(DynInstPtr &inst)
Declaration of a request, the overall memory request consisting of the parts of the request that are ...
virtual Counter totalOps() const override
void copyResult(DynInstPtr &inst, uint64_t mismatch_val, int start_idx)
virtual Counter totalInsts() const override
RegIndex destRegIdx(int i) const
Return logical index (architectural reg num) of i'th destination reg.
void handleError(DynInstPtr &inst)
CCReg readCCRegOperand(const StaticInst *si, int idx) override
Addr getEA() const override
Get the effective address of the instruction.
MiscReg readRegOtherThread(int misc_reg, ThreadID tid) override
std::list< DynInstPtr > instList
bool simPalCheck(int palFunc)
Check for special simulator handling of specific PAL calls.
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
void validateExecution(DynInstPtr &inst)
TheISA::TLB * getITBPtr()
StaticInstPtr curMacroStaticInst
void setDcachePort(MasterPort *dcache_port)
ThreadContext is the external interface to all thread state for anything outside of the CPU...
Declaration of Statistics objects.
ThreadContext * tcBase() override
Returns a pointer to the ThreadContext.
void setCCReg(int reg_idx, CCReg val)
bool checkFlags(Request *unverified_req, Addr vAddr, Addr pAddr, int flags)
Checks if the flags set by the Checker and Checkee match.
MiscReg readMiscRegNoEffect(int misc_reg, ThreadID tid=0) const
AddressMonitor * getAddrMonitor() override
MiscReg readMiscRegNoEffect(int misc_reg) const
void setStCondFailures(unsigned int sc_failures) override
Sets the number of consecutive store conditional failures.
std::queue< Result > result
unsigned readStCondFailures()
void setFloatRegOperand(const StaticInst *si, int idx, FloatReg val) override
Sets a floating point register of single width to a value.
void verify(DynInstPtr &inst)
void pcState(const TheISA::PCState &val) override
MasterPort & getDataPort() override
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
MiscReg readMiscRegOperand(const StaticInst *si, int idx) override
TheISA::PCState pcState() const override
bool mwait(PacketPtr pkt) override
MasterID masterId
id attached to all issued requests
void advancePC(const Fault &fault)
MiscReg readMiscReg(int misc_reg, ThreadID tid=0)
void setMiscRegNoEffect(int misc_reg, const MiscReg &val, ThreadID tid=0)
SimpleThread * threadBase()
uint8_t * unverifiedMemData
TheISA::FloatRegBits FloatRegBits
void setMiscRegNoEffect(int misc_reg, const MiscReg &val)
void demapInstPage(Addr vaddr, uint64_t asn)
void setFloatRegBits(int reg_idx, FloatRegBits val)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
int64_t Counter
Statistics counter type.
void setCCRegOperand(const StaticInst *si, int idx, CCReg val) override
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
void setFloatReg(int reg_idx, FloatReg val)
RegIndex srcRegIdx(int i) const
Return logical index (architectural reg num) of i'th source reg.
void setEA(Addr EA) override
Record the effective address of the instruction.
Addr dbg_vtophys(Addr addr)
void serialize(CheckpointOut &cp) const override
TheISA::PCState pcState()
CCReg readCCReg(int reg_idx)
int16_t ThreadID
Thread index/ID type.
FloatReg readFloatReg(int reg_idx)
void setIntReg(int reg_idx, uint64_t val)
void setIcachePort(MasterPort *icache_port)
TheISA::TLB * getDTBPtr()
std::ostream CheckpointOut
FloatRegBits readFloatRegBits(int reg_idx)
std::vector< Process * > workload
void setSystem(System *system)
GenericISA::SimplePCState< MachInst > PCState
void demapPage(Addr vaddr, uint64_t asn) override
Invalidate a page in the DTLB and ITLB.
void takeOverFrom(BaseCPU *oldCPU)
Base, ISA-independent static instruction class.
Defines a dynamic instruction context.
void recordPCChange(const TheISA::PCState &val)
IntReg readIntRegOperand(const StaticInst *si, int idx) override
Reads an integer register.
void armMonitor(Addr address) override
Fault hwrei() override
Somewhat Alpha-specific function that handles returning from an error or interrupt.
TheISA::MachInst MachInst
void setFloatRegOperandBits(const StaticInst *si, int idx, FloatRegBits val) override
Sets the bits of a floating point register of single width to a binary value.
bool readPredicate() override
void demapDataPage(Addr vaddr, uint64_t asn)
void setIntRegOperand(const StaticInst *si, int idx, IntReg val) override
Sets an integer register to a value.
TheISA::PCState newPCState
MiscReg readMiscReg(int misc_reg) override
Reads a miscellaneous register, handling any architectural side effects due to reading that register...
StaticInstPtr curStaticInst
std::shared_ptr< FaultBase > Fault
Fault readMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags) override
void mwaitAtomic(ThreadContext *tc) override
TheISA::FloatReg FloatReg
void unserialize(CheckpointIn &cp) override
void setRegOtherThread(int misc_reg, MiscReg val, ThreadID tid) override
void setPredicate(bool val)
FloatRegBits readFloatRegOperandBits(const StaticInst *si, int idx) override
Reads a floating point register in its binary format, instead of by value.