Go to the documentation of this file.
42 #ifndef __CPU_CHECKER_CPU_HH__
43 #define __CPU_CHECKER_CPU_HH__
57 #include "debug/Checker.hh"
59 #include "params/CheckerCPU.hh"
326 panic(
"not yet supported!");
333 panic(
"not yet supported!");
340 panic(
"not yet supported!");
386 DPRINTF(
Checker,
"Setting misc reg %d with no effect to check later\n",
395 DPRINTF(
Checker,
"Setting misc reg %d with effect to check later\n",
445 return BaseCPU::getCpuAddrMonitor(0);
467 int& frag_size,
int& size_left)
const;
481 panic(
"AMO is not supported yet in CPU checker\n");
503 Addr pAddr,
int flags);
530 template <
class DynInstPtr>
577 #endif // __CPU_CHECKER_CPU_HH__
RegVal readMiscReg(RegIndex misc_reg) override
const PCStateBase & pcState() const override
CheckerCPU(const Params &p)
RegVal readIntReg(RegIndex reg_idx) const override
constexpr decltype(nullptr) NoFault
void validateInst(const DynInstPtr &inst)
Fault amoMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override
virtual Counter totalInsts() const override
void verify(const DynInstPtr &inst)
int64_t htmTransactionStops
RegVal readCCRegOperand(const StaticInst *si, int idx) override
void setIntReg(RegIndex reg_idx, RegVal val) override
VecPredReg::Container VecPredRegContainer
const TheISA::VecRegContainer & readVecReg(const RegId ®) const override
void serialize(CheckpointOut &cp) const override
bool readPredicate() const override
@ VecElemClass
Vector Register Native Elem lane.
RegVal readFloatRegOperandBits(const StaticInst *si, int idx) override
Reads a floating point register in its binary format, instead of by value.
void advancePC(const Fault &fault)
@ CCRegClass
Condition-code register.
RegVal readMiscRegNoEffect(int misc_reg) const
void setStCondFailures(unsigned int sc_failures) override
Sets the number of consecutive store conditional failures.
Fault initiateHtmCmd(Request::Flags flags) override
Initiate an HTM command, e.g.
unsigned int readStCondFailures() const override
Returns the number of consecutive store conditional failures.
void setVecElemOperand(const StaticInst *si, int idx, RegVal val) override
Sets a vector register to a value.
RefCountingPtr< DynInst > DynInstPtr
RequestPtr genMemFragmentRequest(Addr frag_addr, int size, Request::Flags flags, const std::vector< bool > &byte_enable, int &frag_size, int &size_left) const
Helper function used to generate the request for a single fragment of a memory access.
std::vector< Process * > workload
std::list< DynInstPtr > instList
void armMonitor(Addr address) override
void setMiscReg(RegIndex misc_reg, RegVal val) override
void handleError(const DynInstPtr &inst)
void setCCRegOperand(const StaticInst *si, int idx, RegVal val) override
void setVecReg(const RegId ®, const TheISA::VecRegContainer &val) override
TheISA::VecRegContainer & getWritableVecRegOperand(const StaticInst *si, int idx) override
Read destination vector register operand for modification.
const TheISA::VecRegContainer & readVecRegOperand(const StaticInst *si, int idx) const override
Read source vector register operand.
RegVal readCCReg(RegIndex reg_idx) const override
bool readMemAccPredicate() const override
RegVal readMiscRegOperand(const StaticInst *si, int idx) override
std::queue< int > miscRegIdxs
int64_t htmTransactionStarts
void copyResult(const DynInstPtr &inst, const InstResult &mismatch_val, int start_idx)
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
RegIndex index() const
Index accessors.
Fault writeMem(uint8_t *data, unsigned size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable) override
void setVecPredReg(const RegId ®, const TheISA::VecPredRegContainer &val) override
uint64_t getHtmTransactionUid() const override
void wakeup(ThreadID tid) override
void setVecPredRegOperand(const StaticInst *si, int idx, const TheISA::VecPredRegContainer &val) override
Sets a destination predicate register operand to a value.
TheISA::VecPredRegContainer & getWritableVecPredRegOperand(const StaticInst *si, int idx) override
Gets destination predicate register operand for modification.
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
DynInstPtr unverifiedInst
unsigned readStCondFailures() const override
void setMiscReg(int misc_reg, RegVal val) override
Sets a miscellaneous register, handling any architectural side effects due to writing that register.
@ FloatRegClass
Floating-point register.
bool readMemAccPredicate()
const TheISA::VecPredRegContainer & readVecPredRegOperand(const StaticInst *si, int idx) const override
Predicate registers interface.
void setMemAccPredicate(bool val) override
Base, ISA-independent static instruction class.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
std::shared_ptr< FaultBase > Fault
bool readPredicate() const
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
void demapPage(Addr vaddr, uint64_t asn) override
Invalidate a page in the DTLB and ITLB.
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
uint64_t newHtmTransactionUid() const override
std::unique_ptr< PCStateBase > newPCState
void setMiscRegNoEffect(RegIndex misc_reg, RegVal val) override
void setMemAccPredicate(bool val)
std::shared_ptr< Request > RequestPtr
void demapPage(Addr vaddr, uint64_t asn)
void mwaitAtomic(ThreadContext *tc) override
gem5::VecRegContainer< NumVecElemPerVecReg *sizeof(VecElem)> VecRegContainer
ThreadContext * tcBase() const override
Returns a pointer to the ThreadContext.
void validateExecution(const DynInstPtr &inst)
std::queue< InstResult > result
RequestorID requestorId
id attached to all issued requests
const PCStateBase & pcState() const override
void recordPCChange(const PCStateBase &val)
RegVal readVecElem(const RegId ®) const override
void pcState(const PCStateBase &val) override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void setFloatReg(RegIndex reg_idx, RegVal val) override
void setMiscRegOperand(const StaticInst *si, int idx, RegVal val) override
Fault readMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable) override
RegVal readFloatReg(RegIndex reg_idx) const override
bool checkFlags(const RequestPtr &unverified_req, Addr vAddr, Addr pAddr, int flags)
Checks if the flags set by the Checker and Checkee match.
void setVecRegOperand(const StaticInst *si, int idx, const TheISA::VecRegContainer &val) override
Sets a destination vector register operand to a value.
Port & getDataPort() override
TheISA::VecPredRegContainer & getWritableVecPredReg(const RegId ®) override
RegVal readMiscReg(int misc_reg) override
Reads a miscellaneous register, handling any architectural side effects due to reading that register.
@ IntRegClass
Integer register.
SimpleThread * threadBase()
TheISA::VecRegContainer & getWritableVecReg(const RegId ®) override
Port & getInstPort() override
void unserialize(CheckpointIn &cp) override
const TheISA::VecPredRegContainer & readVecPredReg(const RegId ®) const override
void takeOverFrom(BaseCPU *oldCPU)
StaticInstPtr curStaticInst
void setDcachePort(RequestPort *dcache_port)
void setPredicate(bool val) override
RegVal readVecElemOperand(const StaticInst *si, int idx) const override
Vector Elem Interfaces.
Ports are used to interface objects to each other.
@ MiscRegClass
Control (misc) register.
std::list< DynInstPtr >::iterator InstListIt
void setVecElem(const RegId ®, RegVal val) override
bool mwait(PacketPtr pkt) override
RegVal readIntRegOperand(const StaticInst *si, int idx) override
Reads an integer register.
double Counter
All counters are of 64-bit values.
void setMiscRegNoEffect(int misc_reg, RegVal val)
uint64_t getHtmTransactionalDepth() const override
bool inHtmTransactionalState() const override
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
std::ostream CheckpointOut
AddressMonitor * getAddrMonitor() override
@ VecRegClass
Vector Register.
void setIcachePort(RequestPort *icache_port)
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void setIntRegOperand(const StaticInst *si, int idx, RegVal val) override
Sets an integer register to a value.
StaticInstPtr curMacroStaticInst
void setFloatRegOperandBits(const StaticInst *si, int idx, RegVal val) override
Sets the bits of a floating point register of single width to a binary value.
virtual Counter totalOps() const override
void setPredicate(bool val)
uint8_t * unverifiedMemData
void setCCReg(RegIndex reg_idx, RegVal val) override
int16_t ThreadID
Thread index/ID type.
InstResult unverifiedResult
Register ID: describe an architectural register with its class and index.
#define panic(...)
This implements a cprintf based panic() function.
void setSystem(System *system)
Generated on Tue Feb 8 2022 11:46:55 for gem5 by doxygen 1.8.17