1/* 2 * Copyright (c) 2012 ARM Limited 3 * All rights reserved 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software --- 29 unchanged lines hidden (view full) --- 38 */ 39 40#include "base/chunk_generator.hh" 41#include "mem/port_proxy.hh" 42 43void 44PortProxy::readBlob(Addr addr, uint8_t *p, int size) const 45{ |
46 for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done(); 47 gen.next()) { |
48 Request req(gen.addr(), gen.size(), 0, Request::funcMasterId); |
49 Packet pkt(&req, MemCmd::ReadReq); 50 pkt.dataStatic(p); 51 _port.sendFunctional(&pkt); 52 p += gen.size(); 53 } 54} 55 56void 57PortProxy::writeBlob(Addr addr, const uint8_t *p, int size) const 58{ |
59 for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done(); 60 gen.next()) { |
61 Request req(gen.addr(), gen.size(), 0, Request::funcMasterId); |
62 Packet pkt(&req, MemCmd::WriteReq); 63 pkt.dataStaticConst(p); 64 _port.sendFunctional(&pkt); 65 p += gen.size(); 66 } 67} 68 69void 70PortProxy::memsetBlob(Addr addr, uint8_t v, int size) const 71{ 72 // quick and dirty... 73 uint8_t *buf = new uint8_t[size]; 74 75 std::memset(buf, v, size); 76 PortProxy::writeBlob(addr, buf, size); 77 78 delete [] buf; 79} |