149c149,150
< atomic(p->atomic)
---
> atomic(p->atomic),
> suppress_func_warnings(p->suppress_func_warnings)
164a166
> numWrites = 0;
204c206
< DPRINTF(MemTest, "completing %s at address %x (blk %x)\n",
---
> DPRINTF(MemTest, "completing %s at address %x (blk %x) %s\n",
206c208,209
< req->getPaddr(), blockAddr(req->getPaddr()));
---
> req->getPaddr(), blockAddr(req->getPaddr()),
> pkt->isError() ? "error" : "success");
220,225c223,226
< if (pkt->isRead()) {
< if (memcmp(pkt_data, data, pkt->getSize()) != 0) {
< panic("%s: read of %x (blk %x) @ cycle %d "
< "returns %x, expected %x\n", name(),
< req->getPaddr(), blockAddr(req->getPaddr()), curTick(),
< *pkt_data, *data);
---
> if (pkt->isError()) {
> if (!suppress_func_warnings) {
> warn("Functional Access failed for %x at %x\n",
> pkt->isWrite() ? "write" : "read", req->getPaddr());
226a228,235
> } else {
> if (pkt->isRead()) {
> if (memcmp(pkt_data, data, pkt->getSize()) != 0) {
> panic("%s: read of %x (blk %x) @ cycle %d "
> "returns %x, expected %x\n", name(),
> req->getPaddr(), blockAddr(req->getPaddr()), curTick(),
> *pkt_data, *data);
> }
228,229c237,238
< numReads++;
< numReadsStat++;
---
> numReads++;
> numReadsStat++;
231,235c240,244
< if (numReads == (uint64_t)nextProgressMessage) {
< ccprintf(cerr, "%s: completed %d read accesses @%d\n",
< name(), numReads, curTick());
< nextProgressMessage += progressInterval;
< }
---
> if (numReads == (uint64_t)nextProgressMessage) {
> ccprintf(cerr, "%s: completed %d read, %d write accesses @%d\n",
> name(), numReads, numWrites, curTick());
> nextProgressMessage += progressInterval;
> }
237,241c246,253
< if (maxLoads != 0 && numReads >= maxLoads)
< exitSimLoop("maximum number of loads reached");
< } else {
< assert(pkt->isWrite());
< numWritesStat++;
---
> if (maxLoads != 0 && numReads >= maxLoads)
> exitSimLoop("maximum number of loads reached");
> } else {
> assert(pkt->isWrite());
> funcPort.writeBlob(req->getPaddr(), pkt_data, req->getSize());
> numWrites++;
> numWritesStat++;
> }
363a376,377
> assert(pkt->needsResponse());
> pkt->setSuppressFuncError();
395,396d408
< funcPort.writeBlob(req->getPaddr(), pkt_data, req->getSize());
<
397a410
> pkt->setSuppressFuncError();