|
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... | |
Public Member Functions inherited from PortProxy | |
| 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 | |
Public Types inherited from PortProxy | |
| 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().