diff options
Diffstat (limited to 'src/arch/x86/process.hh')
-rw-r--r-- | src/arch/x86/process.hh | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/src/arch/x86/process.hh b/src/arch/x86/process.hh index d034d990e..8d77bd79d 100644 --- a/src/arch/x86/process.hh +++ b/src/arch/x86/process.hh @@ -62,22 +62,47 @@ #include <vector> #include "sim/process.hh" +class SyscallDesc; + namespace X86ISA { class X86LiveProcess : public LiveProcess { protected: - X86LiveProcess(LiveProcessParams * params, ObjectFile *objFile); + SyscallDesc *syscallDescs; + const int numSyscallDescs; - void startup(); + X86LiveProcess(LiveProcessParams * params, ObjectFile *objFile, + SyscallDesc *_syscallDescs, int _numSyscallDescs); + + template<class IntType> + void argsInit(int pageSize); + + public: + SyscallDesc* getDesc(int callnum); + }; + + class X86_64LiveProcess : public X86LiveProcess + { + protected: + X86_64LiveProcess(LiveProcessParams *params, ObjectFile *objFile, + SyscallDesc *_syscallDescs, int _numSyscallDescs); public: + void argsInit(int intSize, int pageSize); + void startup(); + }; - //Handles traps which request services from the operating system - virtual void handleTrap(int trapNum, ThreadContext *tc); + class I386LiveProcess : public X86LiveProcess + { + protected: + I386LiveProcess(LiveProcessParams *params, ObjectFile *objFile, + SyscallDesc *_syscallDescs, int _numSyscallDescs); + public: void argsInit(int intSize, int pageSize); + void startup(); }; } |