bool is_write = pkt->isWrite();
unsigned size = pkt->getSize();
Addr addr = pkt->getAddr();
bool is_write = pkt->isWrite();
unsigned size = pkt->getSize();
Addr addr = pkt->getAddr();
- bool expects_response = pkt->needsResponse() && !pkt->memInhibitAsserted();
- std::unique_ptr<uint8_t> pkt_data;
+ bool expects_response = pkt->needsResponse() && !pkt->cacheResponding();
+ std::unique_ptr<uint8_t[]> pkt_data;
// write. For reads, we have no data yet, so it doesn't make sense to
// allocate.
pkt_data.reset(new uint8_t[size]);
// write. For reads, we have no data yet, so it doesn't make sense to
// allocate.
pkt_data.reset(new uint8_t[size]);
}
// If a cache miss is served by a cache, a monitor near the memory
// would see a request which needs a response, but this response
}
// If a cache miss is served by a cache, a monitor near the memory
// would see a request which needs a response, but this response
// we additionally have to check the inhibit flag.
if (expects_response && (is_read || is_write)) {
state = new MemCheckerMonitorSenderState(0);
pkt->pushSenderState(state);
}
// we additionally have to check the inhibit flag.
if (expects_response && (is_read || is_write)) {
state = new MemCheckerMonitorSenderState(0);
pkt->pushSenderState(state);
}
bool successful = masterPort.sendTimingReq(pkt);
// If not successful, restore the sender state
bool successful = masterPort.sendTimingReq(pkt);
// If not successful, restore the sender state
bool is_failed_LLSC = pkt->isLLSC() && pkt->req->getExtraData() == 0;
unsigned size = pkt->getSize();
Addr addr = pkt->getAddr();
bool is_failed_LLSC = pkt->isLLSC() && pkt->req->getExtraData() == 0;
unsigned size = pkt->getSize();
Addr addr = pkt->getAddr();
// a read. For writes, we have already given the MemChecker the data on
// the request, so it doesn't make sense to allocate on write.
pkt_data.reset(new uint8_t[size]);
// a read. For writes, we have already given the MemChecker the data on
// the request, so it doesn't make sense to allocate on write.
pkt_data.reset(new uint8_t[size]);