summaryrefslogtreecommitdiff
path: root/src/arch/x86/process.hh
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-02-27 09:25:51 -0800
committerGabe Black <gblack@eecs.umich.edu>2009-02-27 09:25:51 -0800
commitdb3c51d3a02864594c23f25b9e18825327703643 (patch)
tree137040e40f0028f2969ace9acece30fa3573ee2f /src/arch/x86/process.hh
parentc3d7d7ed0e3931d549a14ef8b32a1619861f3ef0 (diff)
downloadgem5-db3c51d3a02864594c23f25b9e18825327703643.tar.xz
X86: Add a vsyscall page for 32 bit processes to use.
Diffstat (limited to 'src/arch/x86/process.hh')
-rw-r--r--src/arch/x86/process.hh14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/arch/x86/process.hh b/src/arch/x86/process.hh
index 2d72d3fd0..cd6d99e66 100644
--- a/src/arch/x86/process.hh
+++ b/src/arch/x86/process.hh
@@ -80,7 +80,8 @@ namespace X86ISA
SyscallDesc *_syscallDescs, int _numSyscallDescs);
template<class IntType>
- void argsInit(int pageSize);
+ void argsInit(int pageSize,
+ std::vector<AuxVector<IntType> > extraAuxvs);
public:
Addr gdtStart()
@@ -114,10 +115,21 @@ namespace X86ISA
I386LiveProcess(LiveProcessParams *params, ObjectFile *objFile,
SyscallDesc *_syscallDescs, int _numSyscallDescs);
+ class VSyscallPage
+ {
+ public:
+ Addr base;
+ Addr size;
+ Addr vsyscallOffset;
+ Addr vsysexitOffset;
+ };
+ VSyscallPage vsyscallPage;
+
public:
void argsInit(int intSize, int pageSize);
void startup();
+ void syscall(int64_t callnum, ThreadContext *tc);
X86ISA::IntReg getSyscallArg(ThreadContext *tc, int i);
void setSyscallArg(ThreadContext *tc, int i, X86ISA::IntReg val);
};