if (pkt->isError()) {
if (!suppress_func_warnings) {
- warn("Functional Access failed for %x at %x\n",
+ warn("Functional %s access failed at %#x\n",
pkt->isWrite() ? "write" : "read", req->getPaddr());
}
} else {
access_size = 0;
dma_access_size = 0;
- Request *req = new Request();
Request::Flags flags;
Addr paddr;
} else {
paddr = ((base) ? baseAddr1 : baseAddr2) + offset;
}
+
+ // For now we only allow one outstanding request per address
+ // per tester This means we assume CPU does write forwarding
+ // to reads that alias something in the cpu store buffer.
+ if (outstandingAddrs.find(paddr) != outstandingAddrs.end()) {
+ return;
+ }
+
bool do_functional = (random() % 100 < percentFunctional) && !uncacheable;
+ Request *req = new Request();
+ uint8_t *result = new uint8_t[8];
if (issueDmas) {
paddr &= ~((1 << dma_access_size) - 1);
}
assert(req->getSize() == 1);
- uint8_t *result = new uint8_t[8];
-
if (cmd < percentReads) {
// read
-
- // For now we only allow one outstanding request per address
- // per tester This means we assume CPU does write forwarding
- // to reads that alias something in the cpu store buffer.
- if (outstandingAddrs.find(paddr) != outstandingAddrs.end()) {
- delete [] result;
- delete req;
- return;
- }
-
outstandingAddrs.insert(paddr);
// ***** NOTE FOR RON: I'm not sure how to access checkMem. - Kevin
}
} else {
// write
-
- // For now we only allow one outstanding request per addreess
- // per tester. This means we assume CPU does write forwarding
- // to reads that alias something in the cpu store buffer.
- if (outstandingAddrs.find(paddr) != outstandingAddrs.end()) {
- delete [] result;
- delete req;
- return;
- }
-
outstandingAddrs.insert(paddr);
DPRINTF(MemTest, "initiating %swrite at addr %x (blk %x) value %x\n",