summaryrefslogtreecommitdiff
path: root/src/cpu/o3/lsq_unit_impl.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/o3/lsq_unit_impl.hh')
-rw-r--r--src/cpu/o3/lsq_unit_impl.hh7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh
index 7ec59e38d..322a6704a 100644
--- a/src/cpu/o3/lsq_unit_impl.hh
+++ b/src/cpu/o3/lsq_unit_impl.hh
@@ -816,9 +816,12 @@ LSQUnit<Impl>::writebackStores()
storeQueue[storeWBIdx].committed = true;
assert(!inst->memData);
- inst->memData = new uint8_t[64];
+ inst->memData = new uint8_t[req->getSize()];
- memcpy(inst->memData, storeQueue[storeWBIdx].data, req->getSize());
+ if (storeQueue[storeWBIdx].isAllZeros)
+ memset(inst->memData, 0, req->getSize());
+ else
+ memcpy(inst->memData, storeQueue[storeWBIdx].data, req->getSize());
MemCmd command =
req->isSwap() ? MemCmd::SwapReq :