gem5
v19.0.0.0
|
A TranslatingPortProxy in FS mode translates a virtual address to a physical address and then calls the read/write functions of the port. More...
#include <fs_translating_port_proxy.hh>
Public Member Functions | |
FSTranslatingPortProxy (ThreadContext *tc) | |
FSTranslatingPortProxy (SendFunctionalFunc func, unsigned int cacheLineSize) | |
FSTranslatingPortProxy (MasterPort &port, unsigned int cacheLineSize) | |
~FSTranslatingPortProxy () | |
bool | tryReadBlob (Addr addr, void *p, int size) const override |
Version of tryReadblob that translates virt->phys and deals with page boundries. More... | |
bool | tryWriteBlob (Addr addr, const void *p, int size) const override |
Version of tryWriteBlob that translates virt->phys and deals with page boundries. More... | |
bool | tryMemsetBlob (Addr address, uint8_t v, int size) const override |
Fill size bytes starting at addr with byte value val. More... | |
![]() | |
PortProxy (SendFunctionalFunc func, unsigned int cacheLineSize) | |
PortProxy (const MasterPort &port, unsigned int cacheLineSize) | |
virtual | ~PortProxy () |
void | readBlobPhys (Addr addr, Request::Flags flags, void *p, int size) const |
Fixed functionality for use in base classes. More... | |
void | writeBlobPhys (Addr addr, Request::Flags flags, const void *p, int size) const |
Write size bytes from p to physical address. More... | |
void | memsetBlobPhys (Addr addr, Request::Flags flags, uint8_t v, int size) const |
Fill size bytes starting at physical addr with byte value val. More... | |
void | readBlob (Addr addr, void *p, int size) const |
Higher level interfaces based on the above. More... | |
void | writeBlob (Addr addr, const void *p, int size) const |
Same as tryWriteBlob, but insists on success. More... | |
void | memsetBlob (Addr addr, uint8_t v, int size) const |
Same as tryMemsetBlob, but insists on success. More... | |
template<typename T > | |
T | read (Addr address) const |
Read sizeof(T) bytes from address and return as object T. More... | |
template<typename T > | |
void | write (Addr address, const T &data) const |
Write object T to address. More... | |
template<typename T > | |
T | read (Addr address, ByteOrder guest_byte_order) const |
Read sizeof(T) bytes from address and return as object T. More... | |
template<typename T > | |
void | write (Addr address, T data, ByteOrder guest_byte_order) const |
Write object T to address. More... | |
bool | tryWriteString (Addr addr, const char *str) const |
Write the string str into guest memory at address addr. More... | |
void | writeString (Addr addr, const char *str) const |
Same as tryWriteString, but insists on success. More... | |
bool | tryReadString (std::string &str, Addr addr) const |
Reads the string at guest address addr into the std::string str. More... | |
void | readString (std::string &str, Addr addr) const |
Same as tryReadString, but insists on success. More... | |
bool | tryReadString (char *str, Addr addr, size_t maxlen) const |
Reads the string at guest address addr into the char * str, reading up to maxlen characters. More... | |
void | readString (char *str, Addr addr, size_t maxlen) const |
Same as tryReadString, but insists on success. More... | |
Private Attributes | |
ThreadContext * | _tc |
Additional Inherited Members | |
![]() | |
typedef std::function< void(PacketPtr pkt)> | SendFunctionalFunc |
A TranslatingPortProxy in FS mode translates a virtual address to a physical address and then calls the read/write functions of the port.
If a thread context is provided the address can alway be translated, If not it can only be translated if it is a simple address masking operation (such as alpha super page accesses).
Definition at line 73 of file fs_translating_port_proxy.hh.
FSTranslatingPortProxy::FSTranslatingPortProxy | ( | ThreadContext * | tc | ) |
Definition at line 57 of file fs_translating_port_proxy.cc.
FSTranslatingPortProxy::FSTranslatingPortProxy | ( | SendFunctionalFunc | func, |
unsigned int | cacheLineSize | ||
) |
Definition at line 63 of file fs_translating_port_proxy.cc.
FSTranslatingPortProxy::FSTranslatingPortProxy | ( | MasterPort & | port, |
unsigned int | cacheLineSize | ||
) |
Definition at line 69 of file fs_translating_port_proxy.cc.
|
inline |
Definition at line 87 of file fs_translating_port_proxy.hh.
References addr, MipsISA::p, tryMemsetBlob(), tryReadBlob(), tryWriteBlob(), and ArmISA::v.
|
overridevirtual |
Fill size bytes starting at addr with byte value val.
Reimplemented from PortProxy.
Definition at line 113 of file fs_translating_port_proxy.cc.
References _tc, ChunkGenerator::done(), PortProxy::memsetBlobPhys(), AlphaISA::PageBytes, and AlphaISA::vtophys().
Referenced by ~FSTranslatingPortProxy().
|
overridevirtual |
Version of tryReadblob that translates virt->phys and deals with page boundries.
Reimplemented from PortProxy.
Definition at line 76 of file fs_translating_port_proxy.cc.
References _tc, ChunkGenerator::done(), MipsISA::p, AlphaISA::PageBytes, PortProxy::readBlobPhys(), and AlphaISA::vtophys().
Referenced by ~FSTranslatingPortProxy().
|
overridevirtual |
Version of tryWriteBlob that translates virt->phys and deals with page boundries.
Reimplemented from PortProxy.
Definition at line 94 of file fs_translating_port_proxy.cc.
References _tc, ChunkGenerator::done(), MipsISA::p, AlphaISA::PageBytes, AlphaISA::vtophys(), and PortProxy::writeBlobPhys().
Referenced by ~FSTranslatingPortProxy().
|
private |
Definition at line 76 of file fs_translating_port_proxy.hh.
Referenced by tryMemsetBlob(), tryReadBlob(), and tryWriteBlob().