SimpleCPU compiles with merge.
authorGabe Black <gblack@eecs.umich.edu>
Fri, 10 Mar 2006 00:21:35 +0000 (19:21 -0500)
committerGabe Black <gblack@eecs.umich.edu>
Fri, 10 Mar 2006 00:21:35 +0000 (19:21 -0500)
arch/alpha/isa_traits.hh:
arch/alpha/linux/process.cc:
arch/alpha/process.cc:
arch/alpha/process.hh:
arch/alpha/tru64/process.cc:
base/chunk_generator.hh:
base/loader/elf_object.cc:
cpu/cpu_exec_context.cc:
cpu/cpu_exec_context.hh:
cpu/exec_context.hh:
cpu/simple/cpu.cc:
kern/linux/linux.hh:
kern/tru64/tru64.hh:
mem/packet.hh:
mem/page_table.cc:
mem/page_table.hh:
mem/physical.cc:
mem/request.hh:
mem/translating_port.cc:
sim/process.hh:
sim/system.cc:
    Fixing merged changes.

--HG--
extra : convert_revision : 2e94f21009395db654880fcb94ec806b6f5772c3

21 files changed:
arch/alpha/isa_traits.hh
arch/alpha/linux/process.cc
arch/alpha/process.cc
arch/alpha/process.hh
arch/alpha/tru64/process.cc
base/chunk_generator.hh
base/loader/elf_object.cc
cpu/cpu_exec_context.cc
cpu/cpu_exec_context.hh
cpu/exec_context.hh
cpu/simple/cpu.cc
kern/linux/linux.hh
kern/tru64/tru64.hh
mem/packet.hh
mem/page_table.cc
mem/page_table.hh
mem/physical.cc
mem/request.hh
mem/translating_port.cc
sim/process.hh
sim/system.cc

index 0cf31cb503759bf052c016a1a0f5d1b7e4f4d7df..8781938814d06d070b5a30444222610b1b2478ec 100644 (file)
@@ -344,6 +344,7 @@ extern const int reg_redir[NumIntRegs];
 
     const Addr MaxAddr = (Addr)-1;
 
+#if !FULL_SYSTEM
     static inline void setSyscallReturn(SyscallReturn return_value, RegFile *regs)
     {
         // check for error condition.  Alpha syscall convention is to
@@ -359,6 +360,7 @@ extern const int reg_redir[NumIntRegs];
             regs->intRegFile[ReturnValueReg] = -return_value.value();
         }
     }
+#endif
 };
 
 static inline AlphaISA::ExtMachInst
index 1c911bc5053b5327db44188e8be13f115df9e926..d4089592120c219c9822745adf1d618fa48a7626 100644 (file)
@@ -32,7 +32,6 @@
 #include "base/trace.hh"
 #include "cpu/exec_context.hh"
 #include "kern/linux/linux.hh"
-#include "mem/functional/functional.hh"
 
 #include "sim/process.hh"
 #include "sim/syscall_emul.hh"
@@ -55,7 +54,7 @@ unameFunc(SyscallDesc *desc, int callnum, Process *process,
     strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003");
     strcpy(name->machine, "alpha");
 
-    name.copyOut(xc->getMemPtr());
+    name.copyOut(xc->port);
     return 0;
 }
 
@@ -75,7 +74,7 @@ osf_getsysinfoFunc(SyscallDesc *desc, int callnum, Process *process,
           TypedBufferArg<uint64_t> fpcr(xc->getSyscallArg(1));
           // I don't think this exactly matches the HW FPCR
           *fpcr = 0;
-          fpcr.copyOut(xc->getMemPtr());
+          fpcr.copyOut(xc->port);
           return 0;
       }
 
@@ -101,7 +100,7 @@ osf_setsysinfoFunc(SyscallDesc *desc, int callnum, Process *process,
       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->getMemPtr());
+          fpcr.copyIn(xc->port);
           DPRINTFR(SyscallVerbose, "osf_setsysinfo(SSI_IEEE_FP_CONTROL): "
                    " setting FPCR to 0x%x\n", gtoh(*(uint64_t*)fpcr));
           return 0;
@@ -567,15 +566,17 @@ SyscallDesc AlphaLinuxProcess::syscallDescs[] = {
 
 AlphaLinuxProcess::AlphaLinuxProcess(const std::string &name,
                                      ObjectFile *objFile,
+                                     System *system,
                                      int stdin_fd,
                                      int stdout_fd,
                                      int stderr_fd,
                                      std::vector<std::string> &argv,
                                      std::vector<std::string> &envp)
-    : LiveProcess(name, objFile, stdin_fd, stdout_fd, stderr_fd, argv, envp),
+    : LiveProcess(name, objFile, system, stdin_fd, stdout_fd,
+            stderr_fd, argv, envp),
      Num_Syscall_Descs(sizeof(syscallDescs) / sizeof(SyscallDesc))
 {
-    init_regs->intRegFile[0] = 0;
+    //init_regs->intRegFile[0] = 0;
 }
 
 
index b2dbe7ad18a6567b5db46eb7437c1d1ed4779a75..dc4b92861c10d9b04adc9306905647d26482da07 100644 (file)
@@ -32,7 +32,7 @@ namespace AlphaISA
 {
 
 LiveProcess *
-createProcess(const std::string &nm, ObjectFile * objFile,
+createProcess(const std::string &nm, ObjectFile * objFile, System *system,
         int stdin_fd, int stdout_fd, int stderr_fd,
         std::vector<std::string> &argv, std::vector<std::string> &envp)
 {
@@ -41,13 +41,13 @@ createProcess(const std::string &nm, ObjectFile * objFile,
         fatal("Object file does not match architecture.");
     switch (objFile->getOpSys()) {
       case ObjectFile::Tru64:
-        process = new AlphaTru64Process(nm, objFile,
+        process = new AlphaTru64Process(nm, objFile, system,
                                         stdin_fd, stdout_fd, stderr_fd,
                                         argv, envp);
         break;
 
       case ObjectFile::Linux:
-        process = new AlphaLinuxProcess(nm, objFile,
+        process = new AlphaLinuxProcess(nm, objFile, system,
                                         stdin_fd, stdout_fd, stderr_fd,
                                         argv, envp);
         break;
index 4a2a4212ef6a77db45c6d0aebc890063c785e75b..a2eb65890f871ee9376667dd8155f0bc69b3b085 100644 (file)
@@ -39,7 +39,7 @@ namespace AlphaISA
 {
 
 LiveProcess *
-createProcess(const std::string &nm, ObjectFile * objFile,
+createProcess(const std::string &nm, ObjectFile * objFile, System * system,
         int stdin_fd, int stdout_fd, int stderr_fd,
         std::vector<std::string> &argv, std::vector<std::string> &envp);
 
index c3a20358767df20b09d94a1585e086a7f04a71be..55de67aced97a2d3a3eee271ede4eccf4982b70f 100644 (file)
@@ -30,7 +30,6 @@
 #include "arch/alpha/tru64/process.hh"
 #include "cpu/exec_context.hh"
 #include "kern/tru64/tru64.hh"
-#include "mem/functional/functional.hh"
 #include "sim/fake_syscall.hh"
 #include "sim/process.hh"
 #include "sim/syscall_emul.hh"
@@ -51,7 +50,7 @@ unameFunc(SyscallDesc *desc, int callnum, Process *process,
     strcpy(name->version, "732");
     strcpy(name->machine, "alpha");
 
-    name.copyOut(xc->getMemPtr());
+    name.copyOut(xc->port);
     return 0;
 }
 
@@ -68,21 +67,21 @@ getsysinfoFunc(SyscallDesc *desc, int callnum, Process *process,
       case Tru64::GSI_MAX_CPU: {
           TypedBufferArg<uint32_t> max_cpu(xc->getSyscallArg(1));
           *max_cpu = htog((uint32_t)process->numCpus());
-          max_cpu.copyOut(xc->getMemPtr());
+          max_cpu.copyOut(xc->port);
           return 1;
       }
 
       case Tru64::GSI_CPUS_IN_BOX: {
           TypedBufferArg<uint32_t> cpus_in_box(xc->getSyscallArg(1));
           *cpus_in_box = htog((uint32_t)process->numCpus());
-          cpus_in_box.copyOut(xc->getMemPtr());
+          cpus_in_box.copyOut(xc->port);
           return 1;
       }
 
       case Tru64::GSI_PHYSMEM: {
           TypedBufferArg<uint64_t> physmem(xc->getSyscallArg(1));
           *physmem = htog((uint64_t)1024 * 1024);      // physical memory in KB
-          physmem.copyOut(xc->getMemPtr());
+          physmem.copyOut(xc->port);
           return 1;
       }
 
@@ -99,14 +98,14 @@ getsysinfoFunc(SyscallDesc *desc, int callnum, Process *process,
           infop->cpu_ex_binding = htog(0);
           infop->mhz = htog(667);
 
-          infop.copyOut(xc->getMemPtr());
+          infop.copyOut(xc->port);
           return 1;
       }
 
       case Tru64::GSI_PROC_TYPE: {
           TypedBufferArg<uint64_t> proc_type(xc->getSyscallArg(1));
           *proc_type = htog((uint64_t)11);
-          proc_type.copyOut(xc->getMemPtr());
+          proc_type.copyOut(xc->port);
           return 1;
       }
 
@@ -115,14 +114,14 @@ getsysinfoFunc(SyscallDesc *desc, int callnum, Process *process,
           strncpy((char *)bufArg.bufferPtr(),
                   "COMPAQ Professional Workstation XP1000",
                   nbytes);
-          bufArg.copyOut(xc->getMemPtr());
+          bufArg.copyOut(xc->port);
           return 1;
       }
 
       case Tru64::GSI_CLK_TCK: {
           TypedBufferArg<uint64_t> clk_hz(xc->getSyscallArg(1));
           *clk_hz = htog((uint64_t)1024);
-          clk_hz.copyOut(xc->getMemPtr());
+          clk_hz.copyOut(xc->port);
           return 1;
       }
 
@@ -531,12 +530,14 @@ AlphaTru64Process::getDesc(int callnum)
 
 AlphaTru64Process::AlphaTru64Process(const std::string &name,
                                      ObjectFile *objFile,
+                                     System *system,
                                      int stdin_fd,
                                      int stdout_fd,
                                      int stderr_fd,
                                      std::vector<std::string> &argv,
                                      std::vector<std::string> &envp)
-    : LiveProcess(name, objFile, stdin_fd, stdout_fd, stderr_fd, argv, envp),
+    : LiveProcess(name, objFile, system, stdin_fd, stdout_fd,
+            stderr_fd, argv, envp),
       Num_Syscall_Descs(sizeof(syscallDescs) / sizeof(SyscallDesc)),
       Num_Mach_Syscall_Descs(sizeof(machSyscallDescs) / sizeof(SyscallDesc))
 {
index a584679d0caf44020af12bc7f9ffafbb8610aba1..1dca50db4cc31991ad0d9d6c25b9658d5573ddcd 100644 (file)
@@ -36,7 +36,7 @@
 
 #include <algorithm>
 #include "base/intmath.hh"
-#include "targetarch/isa_traits.hh" // for Addr
+#include "arch/isa_traits.hh" // for Addr
 
 /**
  * This class takes an arbitrary memory region (address/length pair)
index 1136686f0baef9e778d12d66a42ba07579030120..9a67f1887bb417d08f35dbc52abbddc20392195e 100644 (file)
@@ -47,6 +47,8 @@
 
 #include "base/trace.hh"       // for DPRINTF
 
+#include "sim/byteswap.hh"
+
 
 using namespace std;
 
index 6ef42762dd019b60e3a2f3d1a402d835e27b85ea..f840c38dc8acd4b9495e3f504c146872cc1e25a8 100644 (file)
@@ -92,7 +92,7 @@ CPUExecContext::CPUExecContext(BaseCPU *_cpu, int _thread_num,
 }
 
 CPUExecContext::CPUExecContext(RegFile *regFile)
-    : cpu(NULL), thread_num(-1), process(NULL), mem(NULL), asid(-1),
+    : cpu(NULL), thread_num(-1), process(NULL), asid(-1),
       func_exe_inst(0), storeCondFailures(0)
 {
     regs = *regFile;
index e17cfbb94c7426e1e78b8374de8067c202da0fad..6f725d1e48683fc578804810545375bd7f4812ba 100644 (file)
@@ -363,15 +363,13 @@ class CPUExecContext
     {
         panic("instRead not implemented");
         // return funcPhysMem->read(req, inst);
-        return No_Fault;
+        return NoFault;
     }
 
     void setCpuId(int id) { cpu_id = id; }
 
     int readCpuId() { return cpu_id; }
 
-    FunctionalMemory *getMemPtr() { return mem; }
-
     void copyArchRegs(ExecContext *xc);
 
     //
index 2b6c41bd7470719a6dd32154162efe7ecd356c1a..c917b46e97b2a2a5d0967607c20c253c3b289796 100644 (file)
@@ -30,7 +30,7 @@
 #define __CPU_EXEC_CONTEXT_HH__
 
 #include "config/full_system.hh"
-#include "mem/mem_req.hh"
+#include "mem/request.hh"
 #include "sim/faults.hh"
 #include "sim/host.hh"
 #include "sim/serialize.hh"
@@ -43,8 +43,8 @@ class AlphaDTB;
 class AlphaITB;
 class BaseCPU;
 class Event;
-class FunctionalMemory;
 class PhysicalMemory;
+class TranslatingPort;
 class Process;
 class System;
 
@@ -79,6 +79,8 @@ class ExecContext
         Halted
     };
 
+    TranslatingPort * port;
+
     virtual ~ExecContext() { };
 
     virtual BaseCPU *getCpuPtr() = 0;
@@ -87,8 +89,6 @@ class ExecContext
 
     virtual int readCpuId() = 0;
 
-    virtual FunctionalMemory *getMemPtr() = 0;
-
 #if FULL_SYSTEM
     virtual System *getSystemPtr() = 0;
 
@@ -148,11 +148,11 @@ class ExecContext
     virtual int getInstAsid() = 0;
     virtual int getDataAsid() = 0;
 
-    virtual Fault translateInstReq(MemReqPtr &req) = 0;
+    virtual Fault translateInstReq(CpuRequestPtr &req) = 0;
 
-    virtual Fault translateDataReadReq(MemReqPtr &req) = 0;
+    virtual Fault translateDataReadReq(CpuRequestPtr &req) = 0;
 
-    virtual Fault translateDataWriteReq(MemReqPtr &req) = 0;
+    virtual Fault translateDataWriteReq(CpuRequestPtr &req) = 0;
 
     // Also somewhat obnoxious.  Really only used for the TLB fault.
     // However, may be quite useful in SPARC.
@@ -249,8 +249,6 @@ class ProxyExecContext : public ExecContext
 
     int readCpuId() { return actualXC->readCpuId(); }
 
-    FunctionalMemory *getMemPtr() { return actualXC->getMemPtr(); }
-
 #if FULL_SYSTEM
     System *getSystemPtr() { return actualXC->getSystemPtr(); }
 
@@ -310,13 +308,13 @@ class ProxyExecContext : public ExecContext
     int getInstAsid() { return actualXC->getInstAsid(); }
     int getDataAsid() { return actualXC->getDataAsid(); }
 
-    Fault translateInstReq(MemReqPtr &req)
+    Fault translateInstReq(CpuRequestPtr &req)
     { return actualXC->translateInstReq(req); }
 
-    Fault translateDataReadReq(MemReqPtr &req)
+    Fault translateDataReadReq(CpuRequestPtr &req)
     { return actualXC->translateDataReadReq(req); }
 
-    Fault translateDataWriteReq(MemReqPtr &req)
+    Fault translateDataWriteReq(CpuRequestPtr &req)
     { return actualXC->translateDataWriteReq(req); }
 
     // @todo: Do I need this?
index fc70df66282ad6782e09b224c48910bee2926440..4ac8c845c0a1bc0306c4341c983b5431680d3237 100644 (file)
@@ -410,7 +410,7 @@ SimpleCPU::copySrcTranslate(Addr src)
     }
     return fault;
 #else
-    return No_Fault;
+    return NoFault;
 #endif
 }
 
@@ -462,7 +462,7 @@ SimpleCPU::copy(Addr dest)
     return fault;
 #else
     panic("copy not implemented");
-    return No_Fault;
+    return NoFault;
 #endif
 }
 
@@ -483,7 +483,7 @@ SimpleCPU::read(Addr addr, T &data, unsigned flags)
         }
 
         // @todo: Figure out a way to create a Fault from the packet result.
-        return No_Fault;
+        return NoFault;
     }
 
 //    memReq->reset(addr, sizeof(T), flags);
@@ -501,7 +501,7 @@ SimpleCPU::read(Addr addr, T &data, unsigned flags)
     Fault fault = cpuXC->translateDataReadReq(data_read_req);
 
     // Now do the access.
-    if (fault == No_Fault) {
+    if (fault == NoFault) {
 #if SIMPLE_CPU_MEM_TIMING
         data_read_pkt = new Packet;
         data_read_pkt->cmd = Read;
@@ -525,7 +525,7 @@ SimpleCPU::read(Addr addr, T &data, unsigned flags)
         }
 
         // @todo: Figure out a way to create a Fault from the packet result.
-        return No_Fault;
+        return NoFault;
 #endif
     }
 /*
@@ -616,7 +616,7 @@ SimpleCPU::write(T data, Addr addr, unsigned flags, uint64_t *res)
     // translate to physical address
     Fault fault = cpuXC->translateDataWriteReq(data_write_req);
     // Now do the access.
-    if (fault == No_Fault) {
+    if (fault == NoFault) {
 #if SIMPLE_CPU_MEM_TIMING
         data_write_pkt = new Packet;
         data_write_pkt->cmd = Write;
@@ -974,7 +974,7 @@ SimpleCPU::tick()
                      IFETCH_FLAGS(xc->regs.pc));
 */
 
-        fault = xc->translateInstReq(ifetch_req);
+        fault = cpuXC->translateInstReq(ifetch_req);
 
         if (fault == NoFault) {
 #if SIMPLE_CPU_MEM_TIMING
index 0dbccf546431c0d5cb2927cd3fed7531b2ceaf83..4244eb3694ea87f3a8111008256e9324b9f1789a 100644 (file)
@@ -46,6 +46,8 @@ class Linux {};
 
 #include "sim/syscall_emul.hh"
 
+class TranslatingPort;
+
 ///
 /// This class encapsulates the types, structures, constants,
 /// functions, and syscall-number mappings specific to the Alpha Linux
@@ -240,7 +242,7 @@ class Linux {
     /// memory space.  Used by stat(), fstat(), and lstat().
 #if !BSD_HOST
     static void
-    copyOutStatBuf(FunctionalMemory *mem, Addr addr, hst_stat *host)
+    copyOutStatBuf(TranslatingPort *mem, Addr addr, hst_stat *host)
     {
         TypedBufferArg<Linux::tgt_stat> tgt(addr);
 
@@ -264,7 +266,7 @@ class Linux {
     // Third version for bsd systems which no longer have any support for
     // the old stat() call and stat() is actually a stat64()
     static void
-    copyOutStatBuf(FunctionalMemory *mem, Addr addr, hst_stat64 *host)
+    copyOutStatBuf(TranslatingPort *mem, Addr addr, hst_stat64 *host)
     {
         TypedBufferArg<Linux::tgt_stat> tgt(addr);
 
@@ -289,7 +291,7 @@ class Linux {
 
     // Same for stat64
     static void
-    copyOutStat64Buf(FunctionalMemory *mem, int fd, Addr addr, hst_stat64 *host)
+    copyOutStat64Buf(TranslatingPort *mem, int fd, Addr addr, hst_stat64 *host)
     {
         TypedBufferArg<Linux::tgt_stat64> tgt(addr);
 
index 112f00f31be7d641caf9fac0914dec169507f6c7..11d331765924dfdf0c35725961cac3f3433c22c6 100644 (file)
@@ -61,6 +61,8 @@ typedef struct stat global_stat;
 typedef struct statfs global_statfs;
 typedef struct dirent global_dirent;
 
+class TranslatingPort;
+
 ///
 /// This class encapsulates the types, structures, constants,
 /// functions, and syscall-number mappings specific to the Alpha Tru64
@@ -540,7 +542,7 @@ class Tru64 {
     /// memory space.  Used by stat(), fstat(), and lstat().
     template <class T>
     static void
-    copyOutStatBuf(FunctionalMemory *mem, Addr addr, global_stat *host)
+    copyOutStatBuf(TranslatingPort *mem, Addr addr, global_stat *host)
     {
         TypedBufferArg<T> tgt(addr);
 
@@ -566,7 +568,7 @@ class Tru64 {
     /// memory space.  Used by statfs() and fstatfs().
     template <class T>
     static void
-    copyOutStatfsBuf(FunctionalMemory *mem, Addr addr, global_statfs *host)
+    copyOutStatfsBuf(TranslatingPort *mem, Addr addr, global_statfs *host)
     {
         TypedBufferArg<T> tgt(addr);
 
@@ -590,13 +592,13 @@ class Tru64 {
 
     class F64 {
       public:
-        static void copyOutStatBuf(FunctionalMemory *mem, Addr addr,
+        static void copyOutStatBuf(TranslatingPort *mem, Addr addr,
                                    global_stat *host)
         {
             Tru64::copyOutStatBuf<Tru64::F64_stat>(mem, addr, host);
         }
 
-        static void copyOutStatfsBuf(FunctionalMemory *mem, Addr addr,
+        static void copyOutStatfsBuf(TranslatingPort *mem, Addr addr,
                                      global_statfs *host)
         {
             Tru64::copyOutStatfsBuf<Tru64::F64_statfs>(mem, addr, host);
@@ -605,13 +607,13 @@ class Tru64 {
 
     class PreF64 {
       public:
-        static void copyOutStatBuf(FunctionalMemory *mem, Addr addr,
+        static void copyOutStatBuf(TranslatingPort *mem, Addr addr,
                                    global_stat *host)
         {
             Tru64::copyOutStatBuf<Tru64::pre_F64_stat>(mem, addr, host);
         }
 
-        static void copyOutStatfsBuf(FunctionalMemory *mem, Addr addr,
+        static void copyOutStatfsBuf(TranslatingPort *mem, Addr addr,
                                      global_statfs *host)
         {
             Tru64::copyOutStatfsBuf<Tru64::pre_F64_statfs>(mem, addr, host);
@@ -623,7 +625,7 @@ class Tru64 {
     /// the simulated memory space.  Used by pre_F64_stat(),
     /// pre_F64_fstat(), and pre_F64_lstat().
     static void
-    copyOutPreF64StatBuf(FunctionalMemory *mem, Addr addr, struct stat *host)
+    copyOutPreF64StatBuf(TranslatingPort *mem, Addr addr, struct stat *host)
     {
         TypedBufferArg<Tru64::pre_F64_stat> tgt(addr);
 
@@ -666,7 +668,7 @@ class Tru64 {
 
         // just pass basep through uninterpreted.
         TypedBufferArg<int64_t> basep(tgt_basep);
-        basep.copyIn(xc->getMemPtr());
+        basep.copyIn(xc->port);
         long host_basep = (off_t)htog((int64_t)*basep);
         int host_result = getdirentries(fd, host_buf, tgt_nbytes, &host_basep);
 
@@ -693,7 +695,7 @@ class Tru64 {
             tgt_dp->d_reclen = tgt_bufsize;
             tgt_dp->d_namlen = namelen;
             strcpy(tgt_dp->d_name, host_dp->d_name);
-            tgt_dp.copyOut(xc->getMemPtr());
+            tgt_dp.copyOut(xc->port);
 
             tgt_buf_ptr += tgt_bufsize;
             host_buf_ptr += host_dp->d_reclen;
@@ -702,7 +704,7 @@ class Tru64 {
         delete [] host_buf;
 
         *basep = htog((int64_t)host_basep);
-        basep.copyOut(xc->getMemPtr());
+        basep.copyOut(xc->port);
 
         return tgt_buf_ptr - tgt_buf;
 #endif
@@ -716,7 +718,7 @@ class Tru64 {
         using TheISA::RegFile;
         TypedBufferArg<Tru64::sigcontext> sc(xc->getSyscallArg(0));
 
-        sc.copyIn(xc->getMemPtr());
+        sc.copyIn(xc->port);
 
         // Restore state from sigcontext structure.
         // Note that we'll advance PC <- NPC before the end of the cycle,
@@ -761,7 +763,7 @@ class Tru64 {
               elp->si_phz = htog(clk_hz);
               elp->si_boottime = htog(seconds_since_epoch); // seconds since epoch?
               elp->si_max_procs = htog(process->numCpus());
-              elp.copyOut(xc->getMemPtr());
+              elp.copyOut(xc->port);
               return 0;
           }
 
@@ -782,7 +784,7 @@ class Tru64 {
     {
         TypedBufferArg<Tru64::vm_stack> argp(xc->getSyscallArg(0));
 
-        argp.copyIn(xc->getMemPtr());
+        argp.copyIn(xc->port);
 
         // if the user chose an address, just let them have it.  Otherwise
         // pick one for them.
@@ -791,7 +793,7 @@ class Tru64 {
             int stack_size = (htog(argp->rsize) + htog(argp->ysize) +
                     htog(argp->gsize));
             process->next_thread_stack_base -= stack_size;
-            argp.copyOut(xc->getMemPtr());
+            argp.copyOut(xc->port);
         }
 
         return 0;
@@ -811,7 +813,7 @@ class Tru64 {
         TypedBufferArg<Tru64::nxm_task_attr> attrp(xc->getSyscallArg(0));
         TypedBufferArg<Addr> configptr_ptr(xc->getSyscallArg(1));
 
-        attrp.copyIn(xc->getMemPtr());
+        attrp.copyIn(xc->port);
 
         if (gtoh(attrp->nxm_version) != NXM_LIB_VERSION) {
             cerr << "nxm_task_init: thread library version mismatch! "
@@ -852,7 +854,7 @@ class Tru64 {
         config->nxm_slot_state = htog(slot_state_addr);
         config->nxm_rad[0] = htog(rad_state_addr);
 
-        config.copyOut(xc->getMemPtr());
+        config.copyOut(xc->port);
 
         // initialize the slot_state array and copy it out
         TypedBufferArg<Tru64::nxm_slot_state_t> slot_state(slot_state_addr,
@@ -865,7 +867,7 @@ class Tru64 {
                 (i == 0) ? Tru64::NXM_SLOT_BOUND : Tru64::NXM_SLOT_AVAIL;
         }
 
-        slot_state.copyOut(xc->getMemPtr());
+        slot_state.copyOut(xc->port);
 
         // same for the per-RAD "shared" struct.  Note that we need to
         // allocate extra bytes for the per-VP array which is embedded at
@@ -899,13 +901,13 @@ class Tru64 {
             }
         }
 
-        rad_state.copyOut(xc->getMemPtr());
+        rad_state.copyOut(xc->port);
 
         //
         // copy pointer to shared config area out to user
         //
         *configptr_ptr = htog(config_addr);
-        configptr_ptr.copyOut(xc->getMemPtr());
+        configptr_ptr.copyOut(xc->port);
 
         // Register this as a valid address range with the process
         process->nxm_start = base_addr;
@@ -942,7 +944,7 @@ class Tru64 {
         int thread_index = xc->getSyscallArg(2);
 
         // get attribute args
-        attrp.copyIn(xc->getMemPtr());
+        attrp.copyIn(xc->port);
 
         if (gtoh(attrp->version) != NXM_LIB_VERSION) {
             cerr << "nxm_thread_create: thread library version mismatch! "
@@ -967,7 +969,7 @@ class Tru64 {
 
         TypedBufferArg<Tru64::nxm_shared> rad_state(0x14000,
                                                     rad_state_size);
-        rad_state.copyIn(xc->getMemPtr());
+        rad_state.copyIn(xc->port);
 
         uint64_t uniq_val = gtoh(attrp->pthid) - gtoh(rad_state->nxm_uniq_offset);
 
@@ -978,7 +980,7 @@ class Tru64 {
 
             // This is supposed to be a port number.  Make something up.
             *kidp = htog(99);
-            kidp.copyOut(xc->getMemPtr());
+            kidp.copyOut(xc->port);
 
             return 0;
         } else if (gtoh(attrp->type) == Tru64::NXM_TYPE_VP) {
@@ -992,7 +994,7 @@ class Tru64 {
             ssp->nxm_u.pth_id = attrp->pthid;
             ssp->nxm_u.nxm_active = htog(uniq_val | 1);
 
-            rad_state.copyOut(xc->getMemPtr());
+            rad_state.copyOut(xc->port);
 
             Addr slot_state_addr = 0x12000 + sizeof(Tru64::nxm_config_info);
             int slot_state_size =
@@ -1002,7 +1004,7 @@ class Tru64 {
                 slot_state(slot_state_addr,
                            slot_state_size);
 
-            slot_state.copyIn(xc->getMemPtr());
+            slot_state.copyIn(xc->port);
 
             if (slot_state[thread_index] != Tru64::NXM_SLOT_AVAIL) {
                 cerr << "nxm_thread_createFunc: requested VP slot "
@@ -1014,7 +1016,7 @@ class Tru64 {
             // doesn't work anyway
             slot_state[thread_index] = Tru64::NXM_SLOT_BOUND;
 
-            slot_state.copyOut(xc->getMemPtr());
+            slot_state.copyOut(xc->port);
 
             // Find a free simulator execution context.
             for (int i = 0; i < process->numCpus(); ++i) {
@@ -1028,7 +1030,7 @@ class Tru64 {
                     // and get away with just sticking the thread index
                     // here.
                     *kidp = htog(thread_index);
-                    kidp.copyOut(xc->getMemPtr());
+                    kidp.copyOut(xc->port);
 
                     return 0;
                 }
@@ -1157,12 +1159,12 @@ class Tru64 {
     {
         TypedBufferArg<uint64_t> lockp(uaddr);
 
-        lockp.copyIn(xc->getMemPtr());
+        lockp.copyIn(xc->port);
 
         if (gtoh(*lockp) == 0) {
             // lock is free: grab it
             *lockp = htog(1);
-            lockp.copyOut(xc->getMemPtr());
+            lockp.copyOut(xc->port);
         } else {
             // lock is busy: disable until free
             process->waitList.push_back(Process::WaitRec(uaddr, xc));
@@ -1176,7 +1178,7 @@ class Tru64 {
     {
         TypedBufferArg<uint64_t> lockp(uaddr);
 
-        lockp.copyIn(xc->getMemPtr());
+        lockp.copyIn(xc->port);
         assert(*lockp != 0);
 
         // Check for a process waiting on the lock.
@@ -1185,7 +1187,7 @@ class Tru64 {
         // clear lock field if no waiting context is taking over the lock
         if (num_waiting == 0) {
             *lockp = 0;
-            lockp.copyOut(xc->getMemPtr());
+            lockp.copyOut(xc->port);
         }
     }
 
@@ -1212,12 +1214,12 @@ class Tru64 {
         Addr uaddr = xc->getSyscallArg(0);
         TypedBufferArg<uint64_t> lockp(uaddr);
 
-        lockp.copyIn(xc->getMemPtr());
+        lockp.copyIn(xc->port);
 
         if (gtoh(*lockp) == 0) {
             // lock is free: grab it
             *lockp = htog(1);
-            lockp.copyOut(xc->getMemPtr());
+            lockp.copyOut(xc->port);
             return 0;
         } else {
             return 1;
@@ -1272,7 +1274,7 @@ class Tru64 {
         TypedBufferArg<uint64_t> lockp(lock_addr);
 
         // user is supposed to acquire lock before entering
-        lockp.copyIn(xc->getMemPtr());
+        lockp.copyIn(xc->port);
         assert(gtoh(*lockp) != 0);
 
         m5_unlock_mutex(lock_addr, process, xc);
index ef4eb85d9c7b64eae4a8fbb8c009e1ce9e06521b..260fc60f715c4f93f5547e3fbab05f141b30f0d6 100644 (file)
@@ -36,7 +36,7 @@
 #define __MEM_PACKET_HH__
 
 #include "mem/request.hh"
-#include "targetarch/isa_traits.hh"
+#include "arch/isa_traits.hh"
 #include "sim/root.hh"
 
 struct Packet;
index 63b60de2493f7fe533015a254d3176d7f5b52c11..714ddde359bdba94a03a04489b2b0c7683758b23 100644 (file)
@@ -34,6 +34,7 @@
 #include <map>
 #include <fstream>
 
+#include "arch/faults.hh"
 #include "base/bitfield.hh"
 #include "base/intmath.hh"
 #include "base/trace.hh"
@@ -43,6 +44,7 @@
 #include "sim/system.hh"
 
 using namespace std;
+using namespace TheISA;
 
 PageTable::PageTable(System *_system, Addr _pageSize)
     : pageSize(_pageSize), offsetMask(mask(floorLog2(_pageSize))),
@@ -61,23 +63,23 @@ PageTable::page_check(Addr addr, int size) const
     if (size < sizeof(uint64_t)) {
         if (!isPowerOf2(size)) {
             panic("Invalid request size!\n");
-            return Machine_Check_Fault;
+            return genMachineCheckFault();
         }
 
         if ((size - 1) & addr)
-            return Alignment_Fault;
+            return genAlignmentFault();
     }
     else {
         if ((addr & (VMPageSize - 1)) + size > VMPageSize) {
             panic("Invalid request size!\n");
-            return Machine_Check_Fault;
+            return genMachineCheckFault();
         }
 
         if ((sizeof(uint64_t) - 1) & addr)
-            return Alignment_Fault;
+            return genAlignmentFault();
     }
 
-    return No_Fault;
+    return NoFault;
 }
 
 
@@ -123,7 +125,7 @@ PageTable::translate(CpuRequestPtr &req)
 {
     assert(pageAlign(req->vaddr + req->size - 1) == pageAlign(req->vaddr));
     if (!translate(req->vaddr, req->paddr)) {
-        return Machine_Check_Fault;
+        return genMachineCheckFault();
     }
     return page_check(req->paddr, req->size);
 }
index d318783bebcbf24c8a9cc7baff1761309a1c1c44..8f0842f587cb6cc4d165c8f98064bbc3ced4e881 100644 (file)
@@ -37,6 +37,7 @@
 #include <string>
 #include <map>
 
+#include "arch/isa_traits.hh"
 #include "base/trace.hh"
 #include "mem/request.hh"
 #include "mem/packet.hh"
@@ -59,7 +60,7 @@ class PageTable
 
   public:
 
-    PageTable(System *_system, Addr _pageSize = VMPageSize);
+    PageTable(System *_system, Addr _pageSize = TheISA::VMPageSize);
 
     ~PageTable();
 
index 69544c8fe8a9348edd7b48177d3568643c81f988..c69cfd538d5ffd52a2285e5b83236ab4a3a7f193 100644 (file)
 #include "sim/host.hh"
 #include "sim/builder.hh"
 #include "sim/eventq.hh"
-#include "targetarch/isa_traits.hh"
+#include "arch/isa_traits.hh"
 
 
 using namespace std;
+using namespace TheISA;
 
 PhysicalMemory::MemResponseEvent::MemResponseEvent(Packet &pkt, MemoryPort* _m)
     : Event(&mainEventQueue, CPU_Tick_Pri), pkt(pkt), memoryPort(_m)
index c3c1d0fd48b3250eab9a028a6de4ee725162c920..5e227574150a7eaeef20cacfc50d4e0060946474 100644 (file)
@@ -34,7 +34,7 @@
 #ifndef __MEM_REQUEST_HH__
 #define __MEM_REQUEST_HH__
 
-#include "targetarch/isa_traits.hh"
+#include "arch/isa_traits.hh"
 
 class Request;
 class CpuRequest;
index f4f2ca737839b562eff435733d97d8630f4e1839..42101dad08fb9640fedf9de06afc1a01df8a23ed 100644 (file)
  */
 
 #include <string>
+#include "arch/faults.hh"
 #include "base/chunk_generator.hh"
 #include "mem/port.hh"
 #include "mem/translating_port.hh"
 #include "mem/page_table.hh"
 
+using namespace TheISA;
+
 TranslatingPort::TranslatingPort(Port *_port, PageTable *p_table)
     : port(_port), pTable(p_table)
 { }
@@ -48,13 +51,13 @@ TranslatingPort::readBlobFunctional(Addr addr, uint8_t *p, int size)
     for (ChunkGenerator gen(addr, size, VMPageSize); !gen.done(); gen.next()) {
 
         if (!pTable->translate(gen.addr(),paddr))
-            return Machine_Check_Fault;
+            return genMachineCheckFault();
 
         port->readBlobFunctional(paddr, p + prevSize, gen.size());
         prevSize += gen.size();
     }
 
-    return No_Fault;
+    return NoFault;
 }
 
 Fault
@@ -72,7 +75,7 @@ TranslatingPort::writeBlobFunctional(Addr addr, uint8_t *p, int size,
                                  VMPageSize);
                 pTable->translate(gen.addr(), paddr);
             } else {
-                return Machine_Check_Fault;
+                return genMachineCheckFault();
             }
         }
 
@@ -80,7 +83,7 @@ TranslatingPort::writeBlobFunctional(Addr addr, uint8_t *p, int size,
         prevSize += gen.size();
     }
 
-    return No_Fault;
+    return NoFault;
 }
 
 
@@ -98,14 +101,14 @@ TranslatingPort::memsetBlobFunctional(Addr addr, uint8_t val, int size,
                                  VMPageSize);
                 pTable->translate(gen.addr(), paddr);
             } else {
-                return Machine_Check_Fault;
+                return genMachineCheckFault();
             }
         }
 
         port->memsetBlobFunctional(paddr, val, gen.size());
     }
 
-    return No_Fault;
+    return NoFault;
 }
 
 
@@ -120,12 +123,12 @@ TranslatingPort::writeStringFunctional(Addr addr, const char *str)
     do {
         c = *str++;
         if (!pTable->translate(vaddr++,paddr))
-            return Machine_Check_Fault;
+            return genMachineCheckFault();
 
         port->writeBlobFunctional(paddr, &c, 1);
     } while (c);
 
-    return No_Fault;
+    return NoFault;
 }
 
 Fault
@@ -138,12 +141,12 @@ TranslatingPort::readStringFunctional(std::string &str, Addr addr)
 
     do {
         if (!pTable->translate(vaddr++,paddr))
-            return Machine_Check_Fault;
+            return genMachineCheckFault();
 
         port->readBlobFunctional(paddr, &c, 1);
         str += c;
     } while (c);
 
-    return No_Fault;
+    return NoFault;
 }
 
index fc600fb0650fb363ab7655e79b86fbeb90c1b606..476cb8ecf9107b2c44cb857fe8504d37b8d5b98a 100644 (file)
@@ -48,7 +48,7 @@
 #include "mem/page_table.hh"
 #include "sim/sim_object.hh"
 #include "sim/stats.hh"
-#include "targetarch/isa_traits.hh"
+#include "arch/isa_traits.hh"
 
 class CPUExecContext;
 class ExecContext;
index 3ed7ed5908696e1a85a533cc070fa956bd2273a4..f1d0579d7ccd85107a0443c70fe5d0f00f41f374 100644 (file)
@@ -1,7 +1,6 @@
 #include "base/loader/object_file.hh"
 #include "base/loader/symtab.hh"
 #include "cpu/exec_context.hh"
-#include "arch/vtophys.hh"
 #include "mem/memory.hh"
 #include "sim/builder.hh"
 #include "arch/isa_traits.hh"
@@ -12,7 +11,7 @@
 #include "base/remote_gdb.hh"
 #include "kern/kernel_stats.hh"
 #include "mem/functional/memory_control.hh"
-#include "targetarch/vtophys.hh"
+#include "arch/vtophys.hh"
 #endif
 
 using namespace std;
@@ -72,7 +71,6 @@ System::System(Params *p)
     DPRINTF(Loader, "Kernel entry = %#x\n", kernelEntry);
     DPRINTF(Loader, "Kernel loaded...\n");
 
-#if FULL_SYSTEM
     kernelBinning = new Kernel::Binning(this);
 #endif // FULL_SYSTEM