private:
/** The actual physical port used by this proxy. */
- Port &_port;
+ MasterPort &_port;
- void blobHelper(Addr addr, uint8_t *p, int size, MemCmd cmd);
+ void blobHelper(Addr addr, uint8_t *p, int size, MemCmd cmd) const;
public:
- PortProxy(Port &port) : _port(port) { }
+ PortProxy(MasterPort &port) : _port(port) { }
virtual ~PortProxy() { }
/**
* Read size bytes memory at address and store in p.
*/
- virtual void readBlob(Addr addr, uint8_t* p, int size)
+ virtual void readBlob(Addr addr, uint8_t* p, int size) const
{ blobHelper(addr, p, size, MemCmd::ReadReq); }
/**
* Write size bytes from p to address.
*/
- virtual void writeBlob(Addr addr, uint8_t* p, int size)
+ virtual void writeBlob(Addr addr, uint8_t* p, int size) const
{ blobHelper(addr, p, size, MemCmd::WriteReq); }
/**
* Fill size bytes starting at addr with byte value val.
*/
- virtual void memsetBlob(Addr addr, uint8_t v, int size);
+ virtual void memsetBlob(Addr addr, uint8_t v, int size) const;
/**
* Read sizeof(T) bytes from address and return as object T.
*/
template <typename T>
- T read(Addr address);
+ T read(Addr address) const;
/**
* Write object T to address. Writes sizeof(T) bytes.
*/
template <typename T>
- void write(Addr address, T data);
+ void write(Addr address, T data) const;
#if THE_ISA != NO_ISA
/**
* Performs Guest to Host endianness transform.
*/
template <typename T>
- T readGtoH(Addr address);
+ T readGtoH(Addr address) const;
/**
* Write object T to address. Writes sizeof(T) bytes.
* Performs Host to Guest endianness transform.
*/
template <typename T>
- void writeHtoG(Addr address, T data);
+ void writeHtoG(Addr address, T data) const;
#endif
};
template <typename T>
T
-PortProxy::read(Addr address)
+PortProxy::read(Addr address) const
{
T data;
readBlob(address, (uint8_t*)&data, sizeof(T));
template <typename T>
void
-PortProxy::write(Addr address, T data)
+PortProxy::write(Addr address, T data) const
{
writeBlob(address, (uint8_t*)&data, sizeof(T));
}
#if THE_ISA != NO_ISA
template <typename T>
T
-PortProxy::readGtoH(Addr address)
+PortProxy::readGtoH(Addr address) const
{
T data;
readBlob(address, (uint8_t*)&data, sizeof(T));
template <typename T>
void
-PortProxy::writeHtoG(Addr address, T data)
+PortProxy::writeHtoG(Addr address, T data) const
{
data = TheISA::htog(data);
writeBlob(address, (uint8_t*)&data, sizeof(T));