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);
211 const RegId&
id =
si->destRegIdx(idx);
242 panic(
"not yet supported!");
249 panic(
"not yet supported!");
256 panic(
"not yet supported!");
302 DPRINTF(
Checker,
"Setting misc reg %d with no effect to check later\n",
311 DPRINTF(
Checker,
"Setting misc reg %d with effect to check later\n",
383 int& frag_size,
int& size_left)
const;
397 panic(
"AMO is not supported yet in CPU checker\n");
446 template <
class DynInstPtr>
493 #endif // __CPU_CHECKER_CPU_HH__
RegVal readMiscReg(RegIndex misc_reg) override
const PCStateBase & pcState() const override
CheckerCPU(const Params &p)
RegId flatten(const BaseISA &isa) const
void * getWritableReg(const RegId &arch_reg) override
void armMonitor(ThreadID tid, Addr address)
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 mwaitAtomic(ThreadID tid, ThreadContext *tc, BaseMMU *mmu)
void serialize(CheckpointOut &cp) const override
Serialize this object to the given output stream.
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
AddressMonitor * getCpuAddrMonitor(ThreadID tid)
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
BaseISA * getIsaPtr() const 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
Purely virtual method that returns a reference to the data port.
RegVal readMiscReg(int misc_reg) override
Reads a miscellaneous register, handling any architectural side effects due to reading that register.
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
SimpleThread * threadBase()
Port & getInstPort() override
Purely virtual method that returns a reference to the instruction port.
void unserialize(CheckpointIn &cp) override
Reconstruct the state of this object from a checkpoint.
void takeOverFrom(BaseCPU *oldCPU)
Load the state of a CPU from the previous CPU object, invoked on all new CPUs that are about to be sw...
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 switchOut()
Prepare for another CPU to take over execution.
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
ClockedObjectParams Params
Parameters of ClockedObject.
AddressMonitor * getAddrMonitor() override
bool mwait(ThreadID tid, PacketPtr pkt)
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)
constexpr const RegClass & regClass() const
Class accessor.
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 Sun Jul 30 2023 01:56:47 for gem5 by doxygen 1.8.17