Go to the documentation of this file.
41 #ifndef __CPU_SIMPLE_ATOMIC_HH__
42 #define __CPU_SIMPLE_ATOMIC_HH__
47 #include "params/AtomicSimpleCPU.hh"
129 panic(
"Atomic CPU doesn't expect recvTimingResp!\n");
135 panic(
"Atomic CPU doesn't expect recvRetry!\n");
219 int &frag_size,
int &size_left)
const;
229 panic(
"initiateHtmCmd() is for timing accesses, and should "
230 "never be called on AtomicSimpleCPU.\n");
237 panic(
"htmSendAbortSignal() is for timing accesses, and should "
238 "never be called on AtomicSimpleCPU.");
260 #endif // __CPU_SIMPLE_ATOMIC_HH__
bool tryCompleteDrain()
Try to complete a drain request.
void regProbePoints() override
Fault writeMem(uint8_t *data, unsigned size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable=std::vector< bool >()) override
std::vector< SimpleExecContext * > threadInfo
const bool simulate_data_stalls
Port & getDataPort() override
Return a reference to the data port.
virtual Tick sendPacket(RequestPort &port, const PacketPtr &pkt)
An AtomicCPUPort overrides the default behaviour of the recvAtomicSnoop and ignores the packet instea...
Fault readMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >()) override
virtual ~AtomicSimpleCPU()
AtomicCPUDPort dcachePort
MicroPC microPC() const
Returns the current micropc.
void printAddr(Addr a)
Print state of address in memory system via PrintReq (for debugging).
const bool simulate_inst_stalls
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
DrainState
Object drain/handover states.
std::shared_ptr< FaultBase > Fault
void suspendContext(ThreadID thread_num) override
void takeOverFrom(BaseCPU *old_cpu) override
AtomicCPUPort(const std::string &_name, BaseSimpleCPU *_cpu)
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
virtual Tick fetchInstMem()
uint64_t Tick
Tick count type.
EventFunctionWrapper tickEvent
std::shared_ptr< Request > RequestPtr
AtomicSimpleCPU(const AtomicSimpleCPUParams ¶ms)
void verifyMemoryMode() const override
bool isSnooping() const
Determine if this request port is snooping or not.
void drainResume() override
bool genMemFragmentRequest(const RequestPtr &req, 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 set up the request for a single fragment of a memory access.
Port & getInstPort() override
Return a reference to the instruction port.
void activateContext(ThreadID thread_num) override
bool isCpuDrained() const
Check if a system is in a drained state.
Fault amoMem(Addr addr, uint8_t *data, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override
const PCStateBase & pcState() const override
DrainState drain() override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
RequestPtr data_write_req
ProbePointArg generates a point for the class of Arg.
void switchOut() override
Ports are used to interface objects to each other.
void recvReqRetry()
Called by the peer if sendTimingReq was called on this peer (causing recvTimingReq to be called on th...
void threadSnoop(PacketPtr pkt, ThreadID sender)
Perform snoop for other cpu-local thread contexts.
bool recvTimingResp(PacketPtr pkt)
Receive a timing response from the peer.
ProbePointArg< std::pair< SimpleThread *, const StaticInstPtr > > * ppCommit
Probe Points.
AtomicCPUDPort(const std::string &_name, BaseSimpleCPU *_cpu)
Fault initiateHtmCmd(Request::Flags flags) override
Hardware transactional memory commands (HtmCmds), e.g.
void htmSendAbortSignal(ThreadID tid, uint64_t htm_uid, HtmFailureFaultCause cause) override
virtual void recvFunctionalSnoop(PacketPtr pkt)
Receive a functional snoop request packet from the peer.
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
virtual Tick recvAtomicSnoop(PacketPtr pkt)
Receive an atomic snoop request packet from our peer.
int16_t ThreadID
Thread index/ID type.
#define panic(...)
This implements a cprintf based panic() function.
Generated on Tue Dec 21 2021 11:34:27 for gem5 by doxygen 1.8.17