48 const BaseNonCachingSimpleCPUParams &
p)
51 assert(
p.numThreads == 1);
53 "only one workload allowed");
59 if (!(
system->isAtomicMode() &&
system->bypassCaches())) {
60 fatal(
"The direct CPU requires the memory system to be in the "
61 "'atomic_noncaching' mode.\n");
75 auto callback = [
this](
const MemBackdoor &backdoor) {
78 if (it->second == &backdoor) {
83 panic(
"Got invalidation for unknown memory backdoor.");
85 bd->addInvalidationCallback(callback);
99 auto *
bd = bd_it->second;
virtual Tick fetchInstMem()
AtomicSimpleCPU(const BaseAtomicSimpleCPUParams ¶ms)
std::vector< SimpleExecContext * > threadInfo
Tick fetchInstMem() override
Tick sendPacket(RequestPort &port, const PacketPtr &pkt) override
NonCachingSimpleCPU(const BaseNonCachingSimpleCPUParams &p)
void verifyMemoryMode() const override
Verify that the system is in a memory mode supported by the CPU.
AddrRangeMap< MemBackdoorPtr, 1 > memBackdoors
A RequestPort is a specialisation of a Port, which implements the default protocol for the three diff...
Tick sendAtomicBackdoor(PacketPtr pkt, MemBackdoorPtr &backdoor)
Send an atomic request packet like above, but also request a backdoor to the data being accessed.
#define panic(...)
This implements a cprintf based panic() function.
#define fatal_if(cond,...)
Conditional fatal macro that checks the supplied condition and only causes a fatal error if the condi...
#define fatal(...)
This implements a cprintf based fatal() function.
Copyright (c) 2024 Arm Limited All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
MemBackdoor * MemBackdoorPtr
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
uint64_t Tick
Tick count type.