diff options
author | Ali Saidi <Ali.Saidi@ARM.com> | 2011-07-10 12:56:08 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@ARM.com> | 2011-07-10 12:56:08 -0500 |
commit | f8538f7456f76cf1eaf30c0ed73abfaf22c1d5a9 (patch) | |
tree | 4a5a446082602d7afd5306b8ca96ec153129cdc1 /src/dev/isa_fake.cc | |
parent | 60579e8d74cecea5737a4502599ccf77e9e6a35e (diff) | |
download | gem5-f8538f7456f76cf1eaf30c0ed73abfaf22c1d5a9.tar.xz |
IO: Handle case where ISA Fake device is being used as a fake memory.
Diffstat (limited to 'src/dev/isa_fake.cc')
-rw-r--r-- | src/dev/isa_fake.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/dev/isa_fake.cc b/src/dev/isa_fake.cc index 21b723bdc..98d3f9d45 100644 --- a/src/dev/isa_fake.cc +++ b/src/dev/isa_fake.cc @@ -56,8 +56,9 @@ IsaFake::IsaFake(Params *p) Tick IsaFake::read(PacketPtr pkt) { - + pkt->allocate(); pkt->makeAtomicResponse(); + if (params()->warn_access != "") warn("Device %s accessed by read to address %#x size=%d\n", name(), pkt->getAddr(), pkt->getSize()); @@ -83,7 +84,10 @@ IsaFake::read(PacketPtr pkt) pkt->set(retData8); break; default: - panic("invalid access size!\n"); + if (params()->fake_mem) + std::memset(pkt->getPtr<uint8_t>(), 0, pkt->getSize()); + else + panic("invalid access size! Device being accessed by cache?\n"); } } return pioDelay; |