summaryrefslogtreecommitdiff
path: root/src/arch/x86/process.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/x86/process.hh')
-rw-r--r--src/arch/x86/process.hh33
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();
};
}