summaryrefslogtreecommitdiff
path: root/mem/translating_port.hh
diff options
context:
space:
mode:
authorSteve Reinhardt <stever@eecs.umich.edu>2006-03-12 00:40:29 -0500
committerSteve Reinhardt <stever@eecs.umich.edu>2006-03-12 00:40:29 -0500
commit38dd86ce7297b1ebecc5996c0c158990e14b1f02 (patch)
tree9185434074c988701deb766d93553a535f1c17f4 /mem/translating_port.hh
parent1f5266e79d86fd6b82982c3f43dc2e5ef83a18ee (diff)
downloadgem5-38dd86ce7297b1ebecc5996c0c158990e14b1f02.tar.xz
Fix TranslatingPort access functions to:
- know nothing about Fault objects (as it should be) - call fatal() by default on accesses to unmapped addrs - provide "try" versions for callers that are prepared to handle failure mem/translating_port.cc: mem/translating_port.hh: Memory system objects should not return Fault objects, just errors. Half the time we don't check the return code anyway, so make default version of the access functions call fatal(). Provide "try*" versions that return a bool for places where we really are going to check the return code. sim/syscall_emul.cc: sim/syscall_emul.hh: Need to use new "tryReadString" here since we actually check the return code. --HG-- extra : convert_revision : 039737398ef183904dc382c05912ab96cd1d4a51
Diffstat (limited to 'mem/translating_port.hh')
-rw-r--r--mem/translating_port.hh21
1 files changed, 14 insertions, 7 deletions
diff --git a/mem/translating_port.hh b/mem/translating_port.hh
index 1a334c103..eaecff35a 100644
--- a/mem/translating_port.hh
+++ b/mem/translating_port.hh
@@ -48,14 +48,21 @@ class TranslatingPort
virtual ~TranslatingPort();
public:
- Fault readBlobFunctional(Addr addr, uint8_t *p, int size);
- Fault writeBlobFunctional(Addr addr, uint8_t *p, int size,
- bool alloc = false);
- Fault memsetBlobFunctional(Addr addr, uint8_t val, int size,
- bool alloc = false);
- Fault writeStringFunctional(Addr addr, const char *str);
- Fault readStringFunctional(std::string &str, Addr addr);
+ 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);
+ 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