diff options
author | Brandon Potter <brandon.potter@amd.com> | 2016-11-09 14:27:40 -0600 |
---|---|---|
committer | Brandon Potter <brandon.potter@amd.com> | 2016-11-09 14:27:40 -0600 |
commit | 3886c4a8f2e1bfe17cbf7a5a76ba0fc978c6bb48 (patch) | |
tree | 5a1ce6cbf42009fc9199c7ecfb068890ca74dbd4 /src/arch/arm | |
parent | 7b6cf951e2f0fa70d6599f1e1d03f664b674a75e (diff) | |
download | gem5-3886c4a8f2e1bfe17cbf7a5a76ba0fc978c6bb48.tar.xz |
syscall_emul: [patch 5/22] remove LiveProcess class and use Process instead
The EIOProcess class was removed recently and it was the only other class
which derived from Process. Since every Process invocation is also a
LiveProcess invocation, it makes sense to simplify the organization by
combining the fields from LiveProcess into Process.
Diffstat (limited to 'src/arch/arm')
-rw-r--r-- | src/arch/arm/freebsd/process.cc | 16 | ||||
-rw-r--r-- | src/arch/arm/freebsd/process.hh | 14 | ||||
-rw-r--r-- | src/arch/arm/linux/process.cc | 20 | ||||
-rw-r--r-- | src/arch/arm/linux/process.hh | 10 | ||||
-rw-r--r-- | src/arch/arm/process.cc | 45 | ||||
-rw-r--r-- | src/arch/arm/process.hh | 20 |
6 files changed, 61 insertions, 64 deletions
diff --git a/src/arch/arm/freebsd/process.cc b/src/arch/arm/freebsd/process.cc index 266bab8bf..1ecbdd678 100644 --- a/src/arch/arm/freebsd/process.cc +++ b/src/arch/arm/freebsd/process.cc @@ -53,7 +53,7 @@ using namespace std; using namespace ArmISA; static SyscallReturn -issetugidFunc(SyscallDesc *desc, int callnum, LiveProcess *process, +issetugidFunc(SyscallDesc *desc, int callnum, Process *process, ThreadContext *tc) { @@ -61,7 +61,7 @@ issetugidFunc(SyscallDesc *desc, int callnum, LiveProcess *process, } static SyscallReturn -sysctlFunc(SyscallDesc *desc, int callnum, LiveProcess *process, +sysctlFunc(SyscallDesc *desc, int callnum, Process *process, ThreadContext *tc) { int index = 0; @@ -1206,9 +1206,9 @@ static SyscallDesc syscallDescs64[] = { /* 547 */ SyscallDesc("unused#547", unimplementedFunc), }; -ArmFreebsdProcess32::ArmFreebsdProcess32(LiveProcessParams * params, +ArmFreebsdProcess32::ArmFreebsdProcess32(ProcessParams * params, ObjectFile *objFile, ObjectFile::Arch _arch) - : ArmLiveProcess32(params, objFile, _arch) + : ArmProcess32(params, objFile, _arch) { SyscallTable table; @@ -1218,9 +1218,9 @@ ArmFreebsdProcess32::ArmFreebsdProcess32(LiveProcessParams * params, syscallTables.push_back(table); } -ArmFreebsdProcess64::ArmFreebsdProcess64(LiveProcessParams * params, +ArmFreebsdProcess64::ArmFreebsdProcess64(ProcessParams * params, ObjectFile *objFile, ObjectFile::Arch _arch) - : ArmLiveProcess64(params, objFile, _arch) + : ArmProcess64(params, objFile, _arch) { SyscallTable table; @@ -1269,13 +1269,13 @@ ArmFreebsdProcess64::getDesc(int callnum) void ArmFreebsdProcess32::initState() { - ArmLiveProcess32::initState(); + ArmProcess32::initState(); // The 32 bit equivalent of the comm page would be set up here. } void ArmFreebsdProcess64::initState() { - ArmLiveProcess64::initState(); + ArmProcess64::initState(); // The 64 bit equivalent of the comm page would be set up here. } diff --git a/src/arch/arm/freebsd/process.hh b/src/arch/arm/freebsd/process.hh index 4907c2020..28504d7d8 100644 --- a/src/arch/arm/freebsd/process.hh +++ b/src/arch/arm/freebsd/process.hh @@ -55,16 +55,16 @@ class ArmFreebsdProcessBits }; /// A process with emulated Arm/Freebsd syscalls. -class ArmFreebsdProcess32 : public ArmLiveProcess32, public ArmFreebsdProcessBits +class ArmFreebsdProcess32 : public ArmProcess32, public ArmFreebsdProcessBits { public: - ArmFreebsdProcess32(LiveProcessParams * params, ObjectFile *objFile, - ObjectFile::Arch _arch); + ArmFreebsdProcess32(ProcessParams * params, ObjectFile *objFile, + ObjectFile::Arch _arch); void initState(); /// Explicitly import the otherwise hidden getSyscallArg - using ArmLiveProcess::getSyscallArg; + using ArmProcess::getSyscallArg; /// A page to hold "kernel" provided functions. The name might be wrong. static const Addr commPage; @@ -73,11 +73,11 @@ class ArmFreebsdProcess32 : public ArmLiveProcess32, public ArmFreebsdProcessBit }; /// A process with emulated Arm/Freebsd syscalls. -class ArmFreebsdProcess64 : public ArmLiveProcess64, public ArmFreebsdProcessBits +class ArmFreebsdProcess64 : public ArmProcess64, public ArmFreebsdProcessBits { public: - ArmFreebsdProcess64(LiveProcessParams * params, ObjectFile *objFile, - ObjectFile::Arch _arch); + ArmFreebsdProcess64(ProcessParams * params, ObjectFile *objFile, + ObjectFile::Arch _arch); void initState(); SyscallDesc* getDesc(int callnum); diff --git a/src/arch/arm/linux/process.cc b/src/arch/arm/linux/process.cc index 36a628d52..b8f40be81 100644 --- a/src/arch/arm/linux/process.cc +++ b/src/arch/arm/linux/process.cc @@ -61,7 +61,7 @@ using namespace ArmISA; /// Target uname() handler. static SyscallReturn -unameFunc32(SyscallDesc *desc, int callnum, LiveProcess *process, +unameFunc32(SyscallDesc *desc, int callnum, Process *process, ThreadContext *tc) { int index = 0; @@ -79,7 +79,7 @@ unameFunc32(SyscallDesc *desc, int callnum, LiveProcess *process, /// Target uname() handler. static SyscallReturn -unameFunc64(SyscallDesc *desc, int callnum, LiveProcess *process, +unameFunc64(SyscallDesc *desc, int callnum, Process *process, ThreadContext *tc) { int index = 0; @@ -97,7 +97,7 @@ unameFunc64(SyscallDesc *desc, int callnum, LiveProcess *process, /// Target set_tls() handler. static SyscallReturn -setTLSFunc32(SyscallDesc *desc, int callnum, LiveProcess *process, +setTLSFunc32(SyscallDesc *desc, int callnum, Process *process, ThreadContext *tc) { int index = 0; @@ -110,7 +110,7 @@ setTLSFunc32(SyscallDesc *desc, int callnum, LiveProcess *process, } static SyscallReturn -setTLSFunc64(SyscallDesc *desc, int callnum, LiveProcess *process, +setTLSFunc64(SyscallDesc *desc, int callnum, Process *process, ThreadContext *tc) { int index = 0; @@ -1589,9 +1589,9 @@ static SyscallDesc privSyscallDescs64[] = { /* 5 */ SyscallDesc("set_tls", setTLSFunc64) }; -ArmLinuxProcess32::ArmLinuxProcess32(LiveProcessParams * params, +ArmLinuxProcess32::ArmLinuxProcess32(ProcessParams * params, ObjectFile *objFile, ObjectFile::Arch _arch) - : ArmLiveProcess32(params, objFile, _arch) + : ArmProcess32(params, objFile, _arch) { SyscallTable table; @@ -1608,9 +1608,9 @@ ArmLinuxProcess32::ArmLinuxProcess32(LiveProcessParams * params, syscallTables.push_back(table); } -ArmLinuxProcess64::ArmLinuxProcess64(LiveProcessParams * params, +ArmLinuxProcess64::ArmLinuxProcess64(ProcessParams * params, ObjectFile *objFile, ObjectFile::Arch _arch) - : ArmLiveProcess64(params, objFile, _arch) + : ArmProcess64(params, objFile, _arch) { SyscallTable table; @@ -1667,7 +1667,7 @@ ArmLinuxProcess64::getDesc(int callnum) void ArmLinuxProcess32::initState() { - ArmLiveProcess32::initState(); + ArmProcess32::initState(); allocateMem(commPage, PageBytes); ThreadContext *tc = system->getThreadContext(contextIds[0]); @@ -1714,6 +1714,6 @@ ArmLinuxProcess32::initState() void ArmLinuxProcess64::initState() { - ArmLiveProcess64::initState(); + ArmProcess64::initState(); // The 64 bit equivalent of the comm page would be set up here. } diff --git a/src/arch/arm/linux/process.hh b/src/arch/arm/linux/process.hh index 670739438..d4b7ca7d3 100644 --- a/src/arch/arm/linux/process.hh +++ b/src/arch/arm/linux/process.hh @@ -65,16 +65,16 @@ class ArmLinuxProcessBits }; /// A process with emulated Arm/Linux syscalls. -class ArmLinuxProcess32 : public ArmLiveProcess32, public ArmLinuxProcessBits +class ArmLinuxProcess32 : public ArmProcess32, public ArmLinuxProcessBits { public: - ArmLinuxProcess32(LiveProcessParams * params, ObjectFile *objFile, + ArmLinuxProcess32(ProcessParams * params, ObjectFile *objFile, ObjectFile::Arch _arch); void initState(); /// Explicitly import the otherwise hidden getSyscallArg - using ArmLiveProcess::getSyscallArg; + using ArmProcess::getSyscallArg; /// A page to hold "kernel" provided functions. The name might be wrong. static const Addr commPage; @@ -83,10 +83,10 @@ class ArmLinuxProcess32 : public ArmLiveProcess32, public ArmLinuxProcessBits }; /// A process with emulated Arm/Linux syscalls. -class ArmLinuxProcess64 : public ArmLiveProcess64, public ArmLinuxProcessBits +class ArmLinuxProcess64 : public ArmProcess64, public ArmLinuxProcessBits { public: - ArmLinuxProcess64(LiveProcessParams * params, ObjectFile *objFile, + ArmLinuxProcess64(ProcessParams * params, ObjectFile *objFile, ObjectFile::Arch _arch); void initState(); diff --git a/src/arch/arm/process.cc b/src/arch/arm/process.cc index 41bfa5b13..0bedcb58c 100644 --- a/src/arch/arm/process.cc +++ b/src/arch/arm/process.cc @@ -59,15 +59,15 @@ using namespace std; using namespace ArmISA; -ArmLiveProcess::ArmLiveProcess(LiveProcessParams *params, ObjectFile *objFile, - ObjectFile::Arch _arch) - : LiveProcess(params, objFile), arch(_arch) +ArmProcess::ArmProcess(ProcessParams *params, ObjectFile *objFile, + ObjectFile::Arch _arch) + : Process(params, objFile), arch(_arch) { } -ArmLiveProcess32::ArmLiveProcess32(LiveProcessParams *params, - ObjectFile *objFile, ObjectFile::Arch _arch) - : ArmLiveProcess(params, objFile, _arch) +ArmProcess32::ArmProcess32(ProcessParams *params, ObjectFile *objFile, + ObjectFile::Arch _arch) + : ArmProcess(params, objFile, _arch) { stack_base = 0xbf000000L; @@ -82,9 +82,9 @@ ArmLiveProcess32::ArmLiveProcess32(LiveProcessParams *params, mmap_end = 0x40000000L; } -ArmLiveProcess64::ArmLiveProcess64(LiveProcessParams *params, - ObjectFile *objFile, ObjectFile::Arch _arch) - : ArmLiveProcess(params, objFile, _arch) +ArmProcess64::ArmProcess64(ProcessParams *params, ObjectFile *objFile, + ObjectFile::Arch _arch) + : ArmProcess(params, objFile, _arch) { stack_base = 0x7fffff0000L; @@ -100,9 +100,9 @@ ArmLiveProcess64::ArmLiveProcess64(LiveProcessParams *params, } void -ArmLiveProcess32::initState() +ArmProcess32::initState() { - LiveProcess::initState(); + Process::initState(); argsInit<uint32_t>(PageBytes, INTREG_SP); for (int i = 0; i < contextIds.size(); i++) { ThreadContext * tc = system->getThreadContext(contextIds[i]); @@ -119,9 +119,9 @@ ArmLiveProcess32::initState() } void -ArmLiveProcess64::initState() +ArmProcess64::initState() { - LiveProcess::initState(); + Process::initState(); argsInit<uint64_t>(PageBytes, INTREG_SP0); for (int i = 0; i < contextIds.size(); i++) { ThreadContext * tc = system->getThreadContext(contextIds[i]); @@ -142,7 +142,7 @@ ArmLiveProcess64::initState() template <class IntType> void -ArmLiveProcess::argsInit(int pageSize, IntRegIndex spIndex) +ArmProcess::argsInit(int pageSize, IntRegIndex spIndex) { int intSize = sizeof(IntType); @@ -405,21 +405,21 @@ ArmLiveProcess::argsInit(int pageSize, IntRegIndex spIndex) } ArmISA::IntReg -ArmLiveProcess32::getSyscallArg(ThreadContext *tc, int &i) +ArmProcess32::getSyscallArg(ThreadContext *tc, int &i) { assert(i < 6); return tc->readIntReg(ArgumentReg0 + i++); } ArmISA::IntReg -ArmLiveProcess64::getSyscallArg(ThreadContext *tc, int &i) +ArmProcess64::getSyscallArg(ThreadContext *tc, int &i) { assert(i < 8); return tc->readIntReg(ArgumentReg0 + i++); } ArmISA::IntReg -ArmLiveProcess32::getSyscallArg(ThreadContext *tc, int &i, int width) +ArmProcess32::getSyscallArg(ThreadContext *tc, int &i, int width) { assert(width == 32 || width == 64); if (width == 32) @@ -438,29 +438,28 @@ ArmLiveProcess32::getSyscallArg(ThreadContext *tc, int &i, int width) } ArmISA::IntReg -ArmLiveProcess64::getSyscallArg(ThreadContext *tc, int &i, int width) +ArmProcess64::getSyscallArg(ThreadContext *tc, int &i, int width) { return getSyscallArg(tc, i); } void -ArmLiveProcess32::setSyscallArg(ThreadContext *tc, int i, ArmISA::IntReg val) +ArmProcess32::setSyscallArg(ThreadContext *tc, int i, ArmISA::IntReg val) { assert(i < 6); tc->setIntReg(ArgumentReg0 + i, val); } void -ArmLiveProcess64::setSyscallArg(ThreadContext *tc, - int i, ArmISA::IntReg val) +ArmProcess64::setSyscallArg(ThreadContext *tc, int i, ArmISA::IntReg val) { assert(i < 8); tc->setIntReg(ArgumentReg0 + i, val); } void -ArmLiveProcess32::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret) +ArmProcess32::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret) { if (objFile->getOpSys() == ObjectFile::FreeBSD) { @@ -477,7 +476,7 @@ ArmLiveProcess32::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret) } void -ArmLiveProcess64::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret) +ArmProcess64::setSyscallReturn(ThreadContext *tc, SyscallReturn sysret) { if (objFile->getOpSys() == ObjectFile::FreeBSD) { diff --git a/src/arch/arm/process.hh b/src/arch/arm/process.hh index 657f30af8..f8e6542ff 100644 --- a/src/arch/arm/process.hh +++ b/src/arch/arm/process.hh @@ -51,25 +51,23 @@ #include "mem/page_table.hh" #include "sim/process.hh" -class LiveProcess; class ObjectFile; -class System; -class ArmLiveProcess : public LiveProcess +class ArmProcess : public Process { protected: ObjectFile::Arch arch; - ArmLiveProcess(LiveProcessParams * params, ObjectFile *objFile, - ObjectFile::Arch _arch); + ArmProcess(ProcessParams * params, ObjectFile *objFile, + ObjectFile::Arch _arch); template<class IntType> void argsInit(int pageSize, ArmISA::IntRegIndex spIndex); }; -class ArmLiveProcess32 : public ArmLiveProcess +class ArmProcess32 : public ArmProcess { protected: - ArmLiveProcess32(LiveProcessParams * params, ObjectFile *objFile, - ObjectFile::Arch _arch); + ArmProcess32(ProcessParams * params, ObjectFile *objFile, + ObjectFile::Arch _arch); void initState(); @@ -81,11 +79,11 @@ class ArmLiveProcess32 : public ArmLiveProcess void setSyscallReturn(ThreadContext *tc, SyscallReturn return_value); }; -class ArmLiveProcess64 : public ArmLiveProcess +class ArmProcess64 : public ArmProcess { protected: - ArmLiveProcess64(LiveProcessParams * params, ObjectFile *objFile, - ObjectFile::Arch _arch); + ArmProcess64(ProcessParams * params, ObjectFile *objFile, + ObjectFile::Arch _arch); void initState(); |