Go to the documentation of this file.
41 #ifndef __CPU_SIMPLE_ATOMIC_HH__
42 #define __CPU_SIMPLE_ATOMIC_HH__
47 #include "params/BaseAtomicSimpleCPU.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(
"initiateMemMgmtCmd() is for timing accesses, and "
230 "should 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
Register probe points for this object.
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
unsigned int cacheLineSize() const
Get the cache line size of the system.
virtual ~AtomicSimpleCPU()
AtomicCPUDPort dcachePort
MicroPC microPC() const
Returns the current micropc.
Fault initiateMemMgmtCmd(Request::Flags flags) override
Memory management commands such as hardware transactional memory commands or TLB invalidation command...
void printAddr(Addr a)
Print state of address in memory system via PrintReq (for debugging).
void init() override
init() is called after all C++ SimObjects have been created and all ports are connected.
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
Notify the CPU that the indicated context is now suspended.
const Params & params() const
void takeOverFrom(BaseCPU *old_cpu) override
Load the state of a CPU from the previous CPU object, invoked on all new CPUs that are about to be sw...
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
void verifyMemoryMode() const override
Verify that the system is in a memory mode supported by the CPU.
bool isSnooping() const
Determine if this request port is snooping or not.
void drainResume() override
Resume execution after a successful drain.
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.
AtomicCPUPort(const std::string &_name)
void activateContext(ThreadID thread_num) override
Notify the CPU that the indicated context is now active.
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
Draining is the process of clearing out the states of SimObjects.These are the SimObjects that are pa...
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
Prepare for another CPU to take over execution.
AtomicSimpleCPU(const BaseAtomicSimpleCPUParams ¶ms)
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)
void htmSendAbortSignal(ThreadID tid, uint64_t htm_uid, HtmFailureFaultCause cause) override
This function is used to instruct the memory subsystem that a transaction should be aborted and the s...
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 Sun Jul 30 2023 01:56:53 for gem5 by doxygen 1.8.17