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"
179 const RegId&
id =
si->srcRegIdx(idx);
200 const RegId&
id =
si->destRegIdx(idx);
210 const RegId&
id =
si->destRegIdx(idx);
240 panic(
"not yet supported!");
247 panic(
"not yet supported!");
254 panic(
"not yet supported!");
300 DPRINTF(
Checker,
"Setting misc reg %d with no effect to check later\n",
309 DPRINTF(
Checker,
"Setting misc reg %d with effect to check later\n",
359 return BaseCPU::getCpuAddrMonitor(0);
381 int& frag_size,
int& size_left)
const;
395 panic(
"AMO is not supported yet in CPU checker\n");
444 template <
class DynInstPtr>
491 #endif // __CPU_CHECKER_CPU_HH__
RegVal readMiscReg(RegIndex misc_reg) override
const PCStateBase & pcState() const override
CheckerCPU(const Params &p)
void * getWritableReg(const RegId &arch_reg) 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
RegVal getReg(const RegId &arch_reg) const override
virtual Counter totalInsts() const override
void verify(const DynInstPtr &inst)
int64_t htmTransactionStops
void serialize(CheckpointOut &cp) const override
bool readPredicate() const override
void advancePC(const Fault &fault)
RegVal readMiscRegNoEffect(int misc_reg) const
void setStCondFailures(unsigned int sc_failures) override
Sets the number of consecutive store conditional failures.
unsigned int readStCondFailures() const override
Returns the number of consecutive store conditional failures.
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 setRegOperand(const StaticInst *si, int idx, const void *val) override
void armMonitor(Addr address) override
void setRegOperand(const StaticInst *si, int idx, RegVal val) override
void setMiscReg(RegIndex misc_reg, RegVal val) override
void handleError(const DynInstPtr &inst)
bool readMemAccPredicate() const override
RegVal readMiscRegOperand(const StaticInst *si, int idx) override
RegVal getRegOperand(const StaticInst *si, int idx) override
std::queue< int > miscRegIdxs
void setReg(const RegId &arch_reg, RegVal val) override
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...
Fault writeMem(uint8_t *data, unsigned size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable) override
uint64_t getHtmTransactionUid() const override
void wakeup(ThreadID tid) override
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.
bool readMemAccPredicate()
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
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)
void pcState(const PCStateBase &val) override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
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
void * getWritableRegOperand(const StaticInst *si, int idx) override
bool checkFlags(const RequestPtr &unverified_req, Addr vAddr, Addr pAddr, int flags)
Checks if the flags set by the Checker and Checkee match.
Port & getDataPort() override
RegVal readMiscReg(int misc_reg) override
Reads a miscellaneous register, handling any architectural side effects due to reading that register.
SimpleThread * threadBase()
Port & getInstPort() override
void unserialize(CheckpointIn &cp) override
void takeOverFrom(BaseCPU *oldCPU)
StaticInstPtr curStaticInst
void setDcachePort(RequestPort *dcache_port)
void setPredicate(bool val) override
Ports are used to interface objects to each other.
@ MiscRegClass
Control (misc) register.
std::list< DynInstPtr >::iterator InstListIt
bool mwait(PacketPtr pkt) override
double Counter
All counters are of 64-bit values.
void setMiscRegNoEffect(int misc_reg, RegVal val)
Fault initiateMemMgmtCmd(Request::Flags flags) override
Initiate a memory management command with no valid address.
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
void setIcachePort(RequestPort *icache_port)
constexpr RegIndex index() const
Index accessors.
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
void getRegOperand(const StaticInst *si, int idx, void *val) override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
StaticInstPtr curMacroStaticInst
virtual Counter totalOps() const override
void setPredicate(bool val)
uint8_t * unverifiedMemData
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 Thu Jun 16 2022 10:41:37 for gem5 by doxygen 1.8.17