diff options
Diffstat (limited to 'src/mem/port_proxy.cc')
-rw-r--r-- | src/mem/port_proxy.cc | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/src/mem/port_proxy.cc b/src/mem/port_proxy.cc index f40c64e2e..d454ef78d 100644 --- a/src/mem/port_proxy.cc +++ b/src/mem/port_proxy.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 ARM Limited + * Copyright (c) 2012, 2018 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -42,11 +42,12 @@ #include "base/chunk_generator.hh" void -PortProxy::readBlob(Addr addr, uint8_t *p, int size) const +PortProxy::readBlobPhys(Addr addr, Request::Flags flags, + uint8_t *p, int size) const { for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done(); gen.next()) { - Request req(gen.addr(), gen.size(), 0, Request::funcMasterId); + Request req(gen.addr(), gen.size(), flags, Request::funcMasterId); Packet pkt(&req, MemCmd::ReadReq); pkt.dataStatic(p); _port.sendFunctional(&pkt); @@ -55,11 +56,12 @@ PortProxy::readBlob(Addr addr, uint8_t *p, int size) const } void -PortProxy::writeBlob(Addr addr, const uint8_t *p, int size) const +PortProxy::writeBlobPhys(Addr addr, Request::Flags flags, + const uint8_t *p, int size) const { for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done(); gen.next()) { - Request req(gen.addr(), gen.size(), 0, Request::funcMasterId); + Request req(gen.addr(), gen.size(), flags, Request::funcMasterId); Packet pkt(&req, MemCmd::WriteReq); pkt.dataStaticConst(p); _port.sendFunctional(&pkt); @@ -68,13 +70,33 @@ PortProxy::writeBlob(Addr addr, const uint8_t *p, int size) const } void -PortProxy::memsetBlob(Addr addr, uint8_t v, int size) const +PortProxy::memsetBlobPhys(Addr addr, Request::Flags flags, + uint8_t v, int size) const { // quick and dirty... uint8_t *buf = new uint8_t[size]; std::memset(buf, v, size); - PortProxy::writeBlob(addr, buf, size); + PortProxy::writeBlobPhys(addr, flags, buf, size); delete [] buf; } + + +void +SecurePortProxy::readBlob(Addr addr, uint8_t *p, int size) const +{ + readBlobPhys(addr, Request::SECURE, p, size); +} + +void +SecurePortProxy::writeBlob(Addr addr, const uint8_t *p, int size) const +{ + writeBlobPhys(addr, Request::SECURE, p, size); +} + +void +SecurePortProxy::memsetBlob(Addr addr, uint8_t v, int size) const +{ + memsetBlobPhys(addr, Request::SECURE, v, size); +} |