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()
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 Packet is used to encapsulate a transfer between two objects in the memory system (e....
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 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
uint64_t Tick
Tick count type.