port_proxy.cc (11793:ef606668d247) | port_proxy.cc (12532:a86ce386add1) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2012 ARM Limited | 2 * Copyright (c) 2012, 2018 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 26 unchanged lines hidden (view full) --- 37 * Authors: Andreas Hansson 38 */ 39 40#include "mem/port_proxy.hh" 41 42#include "base/chunk_generator.hh" 43 44void | 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 26 unchanged lines hidden (view full) --- 37 * Authors: Andreas Hansson 38 */ 39 40#include "mem/port_proxy.hh" 41 42#include "base/chunk_generator.hh" 43 44void |
45PortProxy::readBlob(Addr addr, uint8_t *p, int size) const | 45PortProxy::readBlobPhys(Addr addr, Request::Flags flags, 46 uint8_t *p, int size) const |
46{ 47 for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done(); 48 gen.next()) { | 47{ 48 for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done(); 49 gen.next()) { |
49 Request req(gen.addr(), gen.size(), 0, Request::funcMasterId); | 50 Request req(gen.addr(), gen.size(), flags, Request::funcMasterId); |
50 Packet pkt(&req, MemCmd::ReadReq); 51 pkt.dataStatic(p); 52 _port.sendFunctional(&pkt); 53 p += gen.size(); 54 } 55} 56 57void | 51 Packet pkt(&req, MemCmd::ReadReq); 52 pkt.dataStatic(p); 53 _port.sendFunctional(&pkt); 54 p += gen.size(); 55 } 56} 57 58void |
58PortProxy::writeBlob(Addr addr, const uint8_t *p, int size) const | 59PortProxy::writeBlobPhys(Addr addr, Request::Flags flags, 60 const uint8_t *p, int size) const |
59{ 60 for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done(); 61 gen.next()) { | 61{ 62 for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done(); 63 gen.next()) { |
62 Request req(gen.addr(), gen.size(), 0, Request::funcMasterId); | 64 Request req(gen.addr(), gen.size(), flags, Request::funcMasterId); |
63 Packet pkt(&req, MemCmd::WriteReq); 64 pkt.dataStaticConst(p); 65 _port.sendFunctional(&pkt); 66 p += gen.size(); 67 } 68} 69 70void | 65 Packet pkt(&req, MemCmd::WriteReq); 66 pkt.dataStaticConst(p); 67 _port.sendFunctional(&pkt); 68 p += gen.size(); 69 } 70} 71 72void |
71PortProxy::memsetBlob(Addr addr, uint8_t v, int size) const | 73PortProxy::memsetBlobPhys(Addr addr, Request::Flags flags, 74 uint8_t v, int size) const |
72{ 73 // quick and dirty... 74 uint8_t *buf = new uint8_t[size]; 75 76 std::memset(buf, v, size); | 75{ 76 // quick and dirty... 77 uint8_t *buf = new uint8_t[size]; 78 79 std::memset(buf, v, size); |
77 PortProxy::writeBlob(addr, buf, size); | 80 PortProxy::writeBlobPhys(addr, flags, buf, size); |
78 79 delete [] buf; 80} | 81 82 delete [] buf; 83} |
84 85 86void 87SecurePortProxy::readBlob(Addr addr, uint8_t *p, int size) const 88{ 89 readBlobPhys(addr, Request::SECURE, p, size); 90} 91 92void 93SecurePortProxy::writeBlob(Addr addr, const uint8_t *p, int size) const 94{ 95 writeBlobPhys(addr, Request::SECURE, p, size); 96} 97 98void 99SecurePortProxy::memsetBlob(Addr addr, uint8_t v, int size) const 100{ 101 memsetBlobPhys(addr, Request::SECURE, v, size); 102} |
|