summaryrefslogtreecommitdiff
path: root/src/sim
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim')
-rw-r--r--src/sim/arguments.hh7
-rw-r--r--src/sim/pseudo_inst.cc13
2 files changed, 8 insertions, 12 deletions
diff --git a/src/sim/arguments.hh b/src/sim/arguments.hh
index 498527ca2..977e3ffc0 100644
--- a/src/sim/arguments.hh
+++ b/src/sim/arguments.hh
@@ -34,10 +34,9 @@
#include <cassert>
#include <memory>
+#include "cpu/thread_context.hh"
#include "mem/fs_translating_port_proxy.hh"
-class ThreadContext;
-
class Arguments
{
protected:
@@ -137,13 +136,13 @@ class Arguments
template <class T>
operator T *() {
T *buf = (T *)data->alloc(sizeof(T));
- CopyOut(tc, buf, getArg(sizeof(T)), sizeof(T));
+ tc->getVirtProxy().readBlob(getArg(sizeof(T)), buf, sizeof(T));
return buf;
}
operator char *() {
char *buf = data->alloc(2048);
- CopyStringOut(tc, buf, getArg(), 2048);
+ tc->getVirtProxy().readString(buf, getArg(), 2048);
return buf;
}
};
diff --git a/src/sim/pseudo_inst.cc b/src/sim/pseudo_inst.cc
index 8ffb13e3b..92886dacb 100644
--- a/src/sim/pseudo_inst.cc
+++ b/src/sim/pseudo_inst.cc
@@ -377,9 +377,8 @@ addsymbol(ThreadContext *tc, Addr addr, Addr symbolAddr)
if (!FullSystem)
panicFsOnlyPseudoInst("addSymbol");
- char symb[100];
- CopyStringOut(tc, symb, symbolAddr, 100);
- std::string symbol(symb);
+ std::string symbol;
+ tc->getVirtProxy().readString(symbol, symbolAddr);
DPRINTF(Loader, "Loaded symbol: %s @ %#llx\n", symbol, addr);
@@ -525,7 +524,7 @@ readfile(ThreadContext *tc, Addr vaddr, uint64_t len, uint64_t offset)
}
close(fd);
- CopyIn(tc, vaddr, buf, result);
+ tc->getVirtProxy().writeBlob(vaddr, buf, result);
delete [] buf;
return result;
}
@@ -538,10 +537,8 @@ writefile(ThreadContext *tc, Addr vaddr, uint64_t len, uint64_t offset,
vaddr, len, offset, filename_addr);
// copy out target filename
- char fn[100];
std::string filename;
- CopyStringOut(tc, fn, filename_addr, 100);
- filename = std::string(fn);
+ tc->getVirtProxy().readString(filename, filename_addr);
OutputStream *out;
if (offset == 0) {
@@ -563,7 +560,7 @@ writefile(ThreadContext *tc, Addr vaddr, uint64_t len, uint64_t offset,
// copy out data and write to file
char *buf = new char[len];
- CopyOut(tc, buf, vaddr, len);
+ tc->getVirtProxy().readBlob(vaddr, buf, len);
os->write(buf, len);
if (os->fail() || os->bad())
panic("Error while doing writefile!\n");