diff options
author | Ali Saidi <Ali.Saidi@ARM.com> | 2010-09-30 09:35:19 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@ARM.com> | 2010-09-30 09:35:19 -0500 |
commit | aef4a9904e0324b2aba2ddc212768d5b0c72b566 (patch) | |
tree | b52756d6c40904cbbd79940451faf1cab6597c18 /src | |
parent | c41e633e0efebb440083279c3841a2029ff50240 (diff) | |
download | gem5-aef4a9904e0324b2aba2ddc212768d5b0c72b566.tar.xz |
CPU/Cache: Fix some errors exposed by valgrind
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/simple/timing.cc | 8 | ||||
-rw-r--r-- | src/mem/packet.hh | 3 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/cpu/simple/timing.cc b/src/cpu/simple/timing.cc index 7b45822d6..2eb5b432b 100644 --- a/src/cpu/simple/timing.cc +++ b/src/cpu/simple/timing.cc @@ -274,7 +274,7 @@ TimingSimpleCPU::sendData(RequestPtr req, uint8_t *data, uint64_t *res, { PacketPtr pkt; buildPacket(pkt, req, read); - pkt->dataDynamic<uint8_t>(data); + pkt->dataDynamicArray<uint8_t>(data); if (req->getFlags().isSet(Request::NO_ACCESS)) { assert(!dcache_pkt); pkt->makeResponse(); @@ -402,7 +402,7 @@ TimingSimpleCPU::buildSplitPacket(PacketPtr &pkt1, PacketPtr &pkt2, PacketPtr pkt = new Packet(req, pkt1->cmd.responseCommand(), Packet::Broadcast); - pkt->dataDynamic<uint8_t>(data); + pkt->dataDynamicArray<uint8_t>(data); pkt1->dataStatic<uint8_t>(data); pkt2->dataStatic<uint8_t>(data + req1->getSize()); @@ -602,7 +602,7 @@ TimingSimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res) if (traceData) { traceData->setData(data); } - T *dataP = new T; + T *dataP = (T*) new uint8_t[sizeof(T)]; *dataP = TheISA::htog(data); return writeTheseBytes((uint8_t *)dataP, sizeof(T), addr, flags, res); @@ -674,7 +674,7 @@ TimingSimpleCPU::finishTranslation(WholeTranslationState *state) if (state->isPrefetch()) { state->setNoFault(); } - delete state->data; + delete [] state->data; state->deleteReqs(); translationFault(state->getFault()); } else { diff --git a/src/mem/packet.hh b/src/mem/packet.hh index 48b80879e..41edef8a7 100644 --- a/src/mem/packet.hh +++ b/src/mem/packet.hh @@ -705,7 +705,8 @@ class Packet : public FastAlloc, public Printable void setData(uint8_t *p) { - std::memcpy(getPtr<uint8_t>(), p, getSize()); + if (p != getPtr<uint8_t>()) + std::memcpy(getPtr<uint8_t>(), p, getSize()); } /** |