diff options
-rw-r--r-- | src/arch/sparc/process.hh | 20 | ||||
-rw-r--r-- | src/arch/x86/process.cc | 9 | ||||
-rw-r--r-- | src/arch/x86/process.hh | 16 | ||||
-rw-r--r-- | src/sim/process.cc | 10 | ||||
-rw-r--r-- | src/sim/process.hh | 16 |
5 files changed, 29 insertions, 42 deletions
diff --git a/src/arch/sparc/process.hh b/src/arch/sparc/process.hh index a37760139..95abb93d3 100644 --- a/src/arch/sparc/process.hh +++ b/src/arch/sparc/process.hh @@ -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: diff --git a/src/arch/x86/process.cc b/src/arch/x86/process.cc index 52933b7f4..8d0cd5038 100644 --- a/src/arch/x86/process.cc +++ b/src/arch/x86/process.cc @@ -103,11 +103,6 @@ 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; diff --git a/src/arch/x86/process.hh b/src/arch/x86/process.hh index 5def9e13d..d034d990e 100644 --- a/src/arch/x86/process.hh +++ b/src/arch/x86/process.hh @@ -64,26 +64,10 @@ 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(); diff --git a/src/sim/process.cc b/src/sim/process.cc index dab374d84..73adc96e3 100644 --- a/src/sim/process.cc +++ b/src/sim/process.cc @@ -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) diff --git a/src/sim/process.hh b/src/sim/process.hh index d6ed59ced..996663847 100644 --- a/src/sim/process.hh +++ b/src/sim/process.hh @@ -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: |