diff options
author | Ron Dreslinski <rdreslin@umich.edu> | 2006-02-15 22:05:23 -0500 |
---|---|---|
committer | Ron Dreslinski <rdreslin@umich.edu> | 2006-02-15 22:05:23 -0500 |
commit | d142788172ee79e6e67fc8510940c884807305ad (patch) | |
tree | d1c665421357acae6f17cedc4168789f1913f6b1 /arch/alpha | |
parent | b8a2d1e5c78eac41125a0be0bc2b5d5fe4714684 (diff) | |
download | gem5-d142788172ee79e6e67fc8510940c884807305ad.tar.xz |
More compilation fixes.
Should we add a proxy_port that does the v->p address translation?
Should the proxy port return a fault on translation errors, if we add one?
arch/alpha/alpha_linux_process.cc:
Syscalls use a memPort through the CPU now instead of a xc functional memory.
cpu/base.hh:
Add a pointer to the memPort syscalls will use. Should this be a proxy_port that does address translation?
cpu/exec_context.cc:
cpu/exec_context.hh:
Remove functional memory from the exec context
cpu/simple/cpu.cc:
Set the memPort to be used as the syscall port as the dcache port
sim/syscall_emul.cc:
sim/syscall_emul.hh:
Syscalls use a memPort through the CPU now instead of a xc functional memory.
Also, fix the fact that readStringFunctional doesn't return a fault... should proxy_port handle this because it is doing the translation?
--HG--
extra : convert_revision : 1f65318c6594301a75dc4dc0c99fdd436b094a7f
Diffstat (limited to 'arch/alpha')
-rw-r--r-- | arch/alpha/alpha_linux_process.cc | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/alpha/alpha_linux_process.cc b/arch/alpha/alpha_linux_process.cc index 1c3a21582..be2013e1e 100644 --- a/arch/alpha/alpha_linux_process.cc +++ b/arch/alpha/alpha_linux_process.cc @@ -36,7 +36,7 @@ #include "cpu/base.hh" #include "cpu/exec_context.hh" -#include "mem/functional/functional.hh" +#include "mem/port.hh" #include "sim/fake_syscall.hh" #include "sim/host.hh" #include "sim/process.hh" @@ -236,7 +236,7 @@ class Linux { /// buffer. Also copies the target buffer out to the simulated /// memory space. Used by stat(), fstat(), and lstat(). static void - copyOutStatBuf(FunctionalMemory *mem, Addr addr, struct stat *host) + copyOutStatBuf(Port *memPort, Addr addr, struct stat *host) { TypedBufferArg<Linux::tgt_stat> tgt(addr); @@ -254,12 +254,12 @@ class Linux { tgt->st_blksize = host->st_blksize; tgt->st_blocks = host->st_blocks; - tgt.copyOut(mem); + tgt.copyOut(memPort); } // Same for stat64 static void - copyOutStat64Buf(FunctionalMemory *mem, Addr addr, struct stat64 *host) + copyOutStat64Buf(Port *memPort, Addr addr, struct stat64 *host) { TypedBufferArg<Linux::tgt_stat64> tgt(addr); @@ -288,7 +288,7 @@ class Linux { tgt->st_mtime_nsec = 0; tgt->st_ctime_nsec = 0; #endif - tgt.copyOut(mem); + tgt.copyOut(memPort); } /// The target system's hostname. @@ -307,7 +307,7 @@ class Linux { strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003"); strcpy(name->machine, "alpha"); - name.copyOut(xc->mem); + name.copyOut(xc->cpu->memPort); return 0; } @@ -327,7 +327,7 @@ class Linux { TypedBufferArg<uint64_t> fpcr(xc->getSyscallArg(1)); // I don't think this exactly matches the HW FPCR *fpcr = 0; - fpcr.copyOut(xc->mem); + fpcr.copyOut(xc->cpu->memPort); return 0; } @@ -353,7 +353,7 @@ class Linux { case 14: { // SSI_IEEE_FP_CONTROL TypedBufferArg<uint64_t> fpcr(xc->getSyscallArg(1)); // I don't think this exactly matches the HW FPCR - fpcr.copyIn(xc->mem); + fpcr.copyIn(xc->cpu->memPort); DPRINTFR(SyscallVerbose, "osf_setsysinfo(SSI_IEEE_FP_CONTROL): " " setting FPCR to 0x%x\n", *(uint64_t*)fpcr); return 0; |