diff -r cea0a28d50fd -r 7e65c276ca2d src/mem/cache/base.hh --- a/src/mem/cache/base.hh Fri Oct 30 10:32:46 2015 +0000 +++ b/src/mem/cache/base.hh Fri Oct 30 10:33:01 2015 +0000 @@ -508,9 +508,12 @@ MSHR *allocateWriteBuffer(PacketPtr pkt, Tick time) { - // should only see clean evictions in a read-only cache - assert(!isReadOnly || pkt->cmd == MemCmd::CleanEvict); - assert(pkt->isWrite() && !pkt->isRead()); + // should only see writes or clean evicts here + assert(pkt->isWrite() || pkt->cmd == MemCmd::CleanEvict); + + // if this is a read-only cache we should never see any writes + assert(!(isReadOnly && pkt->isWrite())); + return allocateBufferInternal(&writeBuffer, blockAlign(pkt->getAddr()), blkSize, pkt, time, true); diff -r cea0a28d50fd -r 7e65c276ca2d src/mem/packet.cc --- a/src/mem/packet.cc Fri Oct 30 10:32:46 2015 +0000 +++ b/src/mem/packet.cc Fri Oct 30 10:33:01 2015 +0000 @@ -88,7 +88,7 @@ { SET4(IsWrite, NeedsExclusive, IsRequest, HasData), InvalidCmd, "Writeback" }, /* CleanEvict */ - { SET2(IsWrite, IsRequest), InvalidCmd, "CleanEvict" }, + { SET1(IsRequest), InvalidCmd, "CleanEvict" }, /* SoftPFReq */ { SET4(IsRead, IsRequest, IsSWPrefetch, NeedsResponse), SoftPFResp, "SoftPFReq" },