#ifndef __MEM_TRANSLATING_PROT_HH__
#define __MEM_TRANSLATING_PROT_HH__
-#include "mem/memory.hh"
+#include "mem/port.hh"
-class Port;
class PageTable;
-class TranslatingPort
+class TranslatingPort : public FunctionalPort
{
private:
- Port *port;
PageTable *pTable;
+ bool allocating;
TranslatingPort(const TranslatingPort &specmem);
const TranslatingPort &operator=(const TranslatingPort &specmem);
public:
- TranslatingPort(Port *_port, PageTable *p_table);
+ TranslatingPort(PageTable *p_table, bool alloc = false);
virtual ~TranslatingPort();
public:
- bool tryReadBlobFunctional(Addr addr, uint8_t *p, int size);
- bool tryWriteBlobFunctional(Addr addr, uint8_t *p, int size,
- bool alloc = false);
- bool tryMemsetBlobFunctional(Addr addr, uint8_t val, int size,
- bool alloc = false);
- bool tryWriteStringFunctional(Addr addr, const char *str);
- bool tryReadStringFunctional(std::string &str, Addr addr);
+ bool tryReadBlob(Addr addr, uint8_t *p, int size);
+ bool tryWriteBlob(Addr addr, uint8_t *p, int size);
+ bool tryMemsetBlob(Addr addr, uint8_t val, int size);
+ bool tryWriteString(Addr addr, const char *str);
+ bool tryReadString(std::string &str, Addr addr);
+
+ virtual void readBlob(Addr addr, uint8_t *p, int size);
+ virtual void writeBlob(Addr addr, uint8_t *p, int size);
+ virtual void memsetBlob(Addr addr, uint8_t val, int size);
+ void writeString(Addr addr, const char *str);
+ void readString(std::string &str, Addr addr);
- void readBlobFunctional(Addr addr, uint8_t *p, int size);
- void writeBlobFunctional(Addr addr, uint8_t *p, int size,
- bool alloc = false);
- void memsetBlobFunctional(Addr addr, uint8_t val, int size,
- bool alloc = false);
- void writeStringFunctional(Addr addr, const char *str);
- void readStringFunctional(std::string &str, Addr addr);
};
#endif