43 #ifndef __CPU_SIMPLE_TIMING_HH__
44 #define __CPU_SIMPLE_TIMING_HH__
49 #include "params/TimingSimpleCPU.hh"
138 uint8_t *
data,
bool read);
145 uint8_t *
data,
bool read);
203 const char *
description()
const {
return "Timing CPU icache tick"; }
243 const char *
description()
const {
return "Timing CPU dcache tick"; }
361 #endif // __CPU_SIMPLE_TIMING_HH__
const char * description() const
A MasterPort is a specialisation of a BaseMasterPort, which implements the default protocol for the t...
A TimingCPUPort overrides the default behaviour of the recvTiming and recvRetry and implements events...
virtual const char * description() const
Return a C string describing the event.
Cycles is a wrapper class for representing cycle counts, i.e.
void switchOut() override
DrainState
Object drain/handover states.
void schedule(PacketPtr _pkt, Tick t)
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the slave port.
const std::string name() const
Return port name (for DPRINTF).
bool isDrained()
Check if a system is in a drained state.
const char * description() const
Return a C string describing the event.
void suspendContext(ThreadID thread_num) override
const char * description() const
Return a C string describing the event.
void sendData(RequestPtr req, uint8_t *data, uint64_t *res, bool read)
bool scheduled() const
Determine if the current event is scheduled.
void verifyMemoryMode() const override
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
IcachePort(TimingSimpleCPU *_cpu)
PacketPtr buildPacket(RequestPtr req, bool read)
This class captures the state of an address translation.
TimingCPUPort(const std::string &_name, TimingSimpleCPU *_cpu)
DcachePort(TimingSimpleCPU *_cpu)
virtual bool isSnooping() const
Determine if this master port is snooping or not.
ThreadContext is the external interface to all thread state for anything outside of the CPU...
bool isSquashed() const
This function is used by the page table walker to determine if it could translate the a pending reque...
void completeIfetch(PacketPtr)
void buildSplitPacket(PacketPtr &pkt1, PacketPtr &pkt2, RequestPtr req1, RequestPtr req2, RequestPtr req, uint8_t *data, bool read)
bool tryCompleteDrain()
Try to complete a drain request.
void markDelayed()
Signal that the translation has been delayed due to a hw page table walk.
void sendFetch(const Fault &fault, RequestPtr req, ThreadContext *tc)
uint64_t Tick
Tick count type.
bool handleReadPacket(PacketPtr pkt)
FetchTranslation fetchTranslation
SplitFragmentSenderState(PacketPtr _bigPkt, int _index)
TickEvent(TimingSimpleCPU *_cpu)
void translationFault(const Fault &fault)
EventWrapper< MasterPort,&MasterPort::sendRetryResp > retryRespEvent
void takeOverFrom(BaseCPU *oldCPU) override
virtual void recvFunctionalSnoop(PacketPtr pkt)
Receive a functional snoop request packet from the slave port.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
virtual void recvReqRetry()
Called by the slave port if sendTimingReq was called on this master port (causing recvTimingReq to be...
ITickEvent(TimingSimpleCPU *_cpu)
void threadSnoop(PacketPtr pkt, ThreadID sender)
A virtual base opaque structure used to hold state associated with the packet (e.g., an MSHR), specific to a MemObject that sees the packet.
void activateContext(ThreadID thread_num) override
virtual ~TimingSimpleCPU()
void sendSplitData(RequestPtr req1, RequestPtr req2, RequestPtr req, uint8_t *data, bool read)
FetchTranslation(TimingSimpleCPU *_cpu)
int16_t ThreadID
Thread index/ID type.
MasterPort & getDataPort() override
Return a reference to the data port.
virtual void recvReqRetry()
Called by the slave port if sendTimingReq was called on this master port (causing recvTimingReq to be...
IprEvent(Packet *_pkt, TimingSimpleCPU *_cpu, Tick t)
EventWrapper< TimingSimpleCPU,&TimingSimpleCPU::fetch > FetchEvent
SenderState * senderState
This packet's sender state.
void finish(const Fault &fault, RequestPtr req, ThreadContext *tc, BaseTLB::Mode mode)
DTickEvent(TimingSimpleCPU *_cpu)
void advanceInst(const Fault &fault)
virtual bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the slave port.
std::vector< SimpleExecContext * > threadInfo
Fault readMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags) override
void finishTranslation(WholeTranslationState *state)
Finish a DTB translation.
Fault writeMem(uint8_t *data, unsigned size, Addr addr, Request::Flags flags, uint64_t *res) override
void completeDataAccess(PacketPtr pkt)
DrainState drain() override
TimingSimpleCPU(TimingSimpleCPUParams *params)
void printAddr(Addr a)
Print state of address in memory system via PrintReq (for debugging).
virtual void recvTimingSnoopReq(PacketPtr pkt)
Snoop a coherence request, we need to check if this causes a wakeup event on a cpu that is monitoring...
Fault initiateMemRead(Addr addr, unsigned size, Request::Flags flags) override
std::shared_ptr< FaultBase > Fault
void drainResume() override
MasterPort & getInstPort() override
Return a reference to the instruction port.