summaryrefslogtreecommitdiff
path: root/src/arch/x86/process.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-02-27 09:21:36 -0800
committerGabe Black <gblack@eecs.umich.edu>2009-02-27 09:21:36 -0800
commit05de9f4e2cb0771a8f83dc1888c877852e19f1ad (patch)
tree546b6d465515ea3e125b516c22be99c8774bb9f0 /src/arch/x86/process.hh
parent932f6440a1269c6ceaf2dc07a9ced8ac4b7b1652 (diff)
downloadgem5-05de9f4e2cb0771a8f83dc1888c877852e19f1ad.tar.xz
X86: Distinguish the width of values on the stack between 32 and 64 bit processes.
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();
};
}