summaryrefslogtreecommitdiff
path: root/src/dev/isa_fake.cc
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@ARM.com>2011-07-10 12:56:08 -0500
committerAli Saidi <Ali.Saidi@ARM.com>2011-07-10 12:56:08 -0500
commitf8538f7456f76cf1eaf30c0ed73abfaf22c1d5a9 (patch)
tree4a5a446082602d7afd5306b8ca96ec153129cdc1 /src/dev/isa_fake.cc
parent60579e8d74cecea5737a4502599ccf77e9e6a35e (diff)
downloadgem5-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.cc8
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;