diff options
author | Andreas Hansson <andreas.hansson@arm.com> | 2014-12-02 06:07:52 -0500 |
---|---|---|
committer | Andreas Hansson <andreas.hansson@arm.com> | 2014-12-02 06:07:52 -0500 |
commit | f012166bb600ebaeefa48e74f7dd7fdfc9742506 (patch) | |
tree | d7be12d21ec6629af877b03eeec224c699ac2e29 /src/mem/cache | |
parent | a2ee51f631199f629f36baf2f59161e25be84bdc (diff) | |
download | gem5-f012166bb600ebaeefa48e74f7dd7fdfc9742506.tar.xz |
mem: Cleanup Packet::checkFunctional and hasData usage
This patch cleans up the use of hasData and checkFunctional in the
packet. The hasData function is unfortunately suggesting that it
checks if the packet has a valid data pointer, when it does in fact
only check if the specific packet type is specified to have a data
payload. The confusion led to a bug in checkFunctional. The latter
function is also tidied up to avoid name overloading.
Diffstat (limited to 'src/mem/cache')
-rw-r--r-- | src/mem/cache/cache_impl.hh | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mem/cache/cache_impl.hh b/src/mem/cache/cache_impl.hh index 8e8079d58..296f31ebd 100644 --- a/src/mem/cache/cache_impl.hh +++ b/src/mem/cache/cache_impl.hh @@ -1481,6 +1481,10 @@ Cache<TagStore>::handleFill(PacketPtr pkt, BlkType *blk, if (blk == NULL) { // better have read new data... assert(pkt->hasData()); + + // only read reaponses have data + assert(pkt->isRead()); + // need to do a replacement blk = allocateBlock(addr, is_secure, writebacks); if (blk == NULL) { @@ -1538,8 +1542,10 @@ Cache<TagStore>::handleFill(PacketPtr pkt, BlkType *blk, DPRINTF(Cache, "Block addr %x (%s) moving from state %x to %s\n", addr, is_secure ? "s" : "ns", old_state, blk->print()); - // if we got new data, copy it in + // if we got new data, copy it in (checking for a read response + // and a response that has data is the same in the end) if (pkt->isRead()) { + assert(pkt->hasData()); std::memcpy(blk->data, pkt->getConstPtr<uint8_t>(), blkSize); } |