summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mem/cache/cache.cc10
-rw-r--r--src/mem/packet.hh15
2 files changed, 14 insertions, 11 deletions
diff --git a/src/mem/cache/cache.cc b/src/mem/cache/cache.cc
index c03b5b2a8..28c4343d1 100644
--- a/src/mem/cache/cache.cc
+++ b/src/mem/cache/cache.cc
@@ -416,7 +416,7 @@ Cache::access(PacketPtr pkt, CacheBlk *&blk, Cycles &lat,
}
// nothing else to do; writeback doesn't expect response
assert(!pkt->needsResponse());
- std::memcpy(blk->data, pkt->getConstPtr<uint8_t>(), blkSize);
+ pkt->writeDataToBlock(blk->data, blkSize);
DPRINTF(Cache, "%s new state is %s\n", __func__, blk->print());
incHitCount(pkt);
// populate the time when the block will be ready to access.
@@ -477,7 +477,7 @@ Cache::access(PacketPtr pkt, CacheBlk *&blk, Cycles &lat,
}
// nothing else to do; writeback doesn't expect response
assert(!pkt->needsResponse());
- std::memcpy(blk->data, pkt->getConstPtr<uint8_t>(), blkSize);
+ pkt->writeDataToBlock(blk->data, blkSize);
DPRINTF(Cache, "%s new state is %s\n", __func__, blk->print());
incHitCount(pkt);
@@ -1684,7 +1684,7 @@ Cache::writebackBlk(CacheBlk *blk)
blk->status &= ~BlkDirty;
pkt->allocate();
- std::memcpy(pkt->getPtr<uint8_t>(), blk->data, blkSize);
+ pkt->setDataFromBlock(blk->data, blkSize);
return pkt;
}
@@ -1722,7 +1722,7 @@ Cache::writecleanBlk(CacheBlk *blk, Request::Flags dest, PacketId id)
blk->status &= ~BlkDirty;
pkt->allocate();
- std::memcpy(pkt->getPtr<uint8_t>(), blk->data, blkSize);
+ pkt->setDataFromBlock(blk->data, blkSize);
return pkt;
}
@@ -1970,7 +1970,7 @@ Cache::handleFill(PacketPtr pkt, CacheBlk *blk, PacketList &writebacks,
assert(pkt->hasData());
assert(pkt->getSize() == blkSize);
- std::memcpy(blk->data, pkt->getConstPtr<uint8_t>(), blkSize);
+ pkt->writeDataToBlock(blk->data, blkSize);
}
// We pay for fillLatency here.
blk->whenReady = clockEdge() + fillLatency * clockPeriod() +
diff --git a/src/mem/packet.hh b/src/mem/packet.hh
index 66625b382..b5b882c91 100644
--- a/src/mem/packet.hh
+++ b/src/mem/packet.hh
@@ -324,10 +324,10 @@ class Packet : public Printable
private:
/**
- * A pointer to the data being transfered. It can be differnt
- * sizes at each level of the heirarchy so it belongs in the
+ * A pointer to the data being transferred. It can be different
+ * sizes at each level of the hierarchy so it belongs to the
* packet, not request. This may or may not be populated when a
- * responder recieves the packet. If not populated it memory should
+ * responder receives the packet. If not populated memory should
* be allocated.
*/
PacketDataPtr data;
@@ -1096,8 +1096,8 @@ class Packet : public Printable
}
/**
- * Copy data from the packet to the provided block pointer, which
- * is aligned to the given block size.
+ * Copy data from the packet to the memory at the provided pointer.
+ * @param p Pointer to which data will be copied.
*/
void
writeData(uint8_t *p) const
@@ -1106,7 +1106,10 @@ class Packet : public Printable
}
/**
- * Copy data from the packet to the memory at the provided pointer.
+ * Copy data from the packet to the provided block pointer, which
+ * is aligned to the given block size.
+ * @param blk_data Pointer to block to which data will be copied.
+ * @param blkSize Block size in bytes.
*/
void
writeDataToBlock(uint8_t *blk_data, int blkSize) const