This patch pulls out the auxiliary vector struct from individual ISA
authorLisa Hsu <hsul@eecs.umich.edu>
Thu, 4 Dec 2008 23:03:35 +0000 (18:03 -0500)
committerLisa Hsu <hsul@eecs.umich.edu>
Thu, 4 Dec 2008 23:03:35 +0000 (18:03 -0500)
LiveProcesses to the base LiveProcess definition so anyone can use them.

src/arch/sparc/process.hh
src/arch/x86/process.cc
src/arch/x86/process.hh
src/sim/process.cc
src/sim/process.hh

index a37760139e89b3d7fabf7e10bd0f4ae1b014a219..95abb93d3e2a9b4bea1383e1e22e62588ff1a277 100644 (file)
@@ -71,26 +71,6 @@ class SparcLiveProcess : public LiveProcess
     virtual void flushWindows(ThreadContext *tc) = 0;
 };
 
-template<class IntType>
-struct M5_auxv_t
-{
-    IntType a_type;
-    union {
-        IntType a_val;
-        IntType a_ptr;
-        IntType a_fcn;
-    };
-
-    M5_auxv_t()
-    {}
-
-    M5_auxv_t(IntType type, IntType val)
-    {
-        a_type = SparcISA::htog(type);
-        a_val = SparcISA::htog(val);
-    }
-};
-
 class Sparc32LiveProcess : public SparcLiveProcess
 {
   protected:
index 52933b7f43f22f9e265fb63890d254381a954b8b..8d0cd5038dfe8789f56c92a572c7323f4d3e1ea4 100644 (file)
 using namespace std;
 using namespace X86ISA;
 
-M5_64_auxv_t::M5_64_auxv_t(int64_t type, int64_t val)
-{
-    a_type = X86ISA::htog(type);
-    a_val = X86ISA::htog(val);
-}
 
 X86LiveProcess::X86LiveProcess(LiveProcessParams * params,
         ObjectFile *objFile)
@@ -205,7 +200,9 @@ X86LiveProcess::startup()
 void
 X86LiveProcess::argsInit(int intSize, int pageSize)
 {
-    typedef M5_64_auxv_t auxv_t;
+    typedef M5_auxv_t<uint64_t> auxv_t;
+    std::vector<auxv_t>  auxv;
+
     Process::startup();
 
     string filename;
index 5def9e13da33a0adee95144518c85c1c4f329e53..d034d990e34278ee0d98a5205124c60e6382aba8 100644 (file)
 
 namespace X86ISA
 {
-    struct M5_64_auxv_t
-    {
-        int64_t a_type;
-        union {
-            int64_t a_val;
-            int64_t a_ptr;
-            int64_t a_fcn;
-        };
-
-        M5_64_auxv_t()
-        {}
-
-        M5_64_auxv_t(int64_t type, int64_t val);
-    };
 
     class X86LiveProcess : public LiveProcess
     {
       protected:
-        std::vector<M5_64_auxv_t> auxv;
-
         X86LiveProcess(LiveProcessParams * params, ObjectFile *objFile);
 
         void startup();
index dab374d84d0c22d53693e3b90d7359e1fd02e93d..73adc96e33c4ee11b74710936950fcead5418f29 100644 (file)
@@ -86,6 +86,16 @@ using namespace TheISA;
 // current number of allocated processes
 int num_processes = 0;
 
+template<class IntType>
+M5_auxv_t<IntType>::M5_auxv_t(IntType type, IntType val)
+{
+    a_type = TheISA::htog(type);
+    a_val = TheISA::htog(val);
+}
+
+template class M5_auxv_t<uint32_t>;
+template class M5_auxv_t<uint64_t>;
+
 Process::Process(ProcessParams * params)
     : SimObject(params), system(params->system), checkpointRestored(false),
     max_stack_size(params->max_stack_size)
index d6ed59ced02da0893e642f34d6e94eb7143e8606..99666384786f94694335a4eefaa807f94de4f5f1 100644 (file)
@@ -61,6 +61,22 @@ namespace TheISA
     class RemoteGDB;
 }
 
+template<class IntType>
+struct M5_auxv_t
+{
+    IntType a_type;
+    union {
+        IntType a_val;
+        IntType a_ptr;
+        IntType a_fcn;
+    };
+
+    M5_auxv_t()
+    {}
+
+    M5_auxv_t(IntType type, IntType val);
+};
+
 class Process : public SimObject
 {
   public: