diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2009-02-27 09:25:51 -0800 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2009-02-27 09:25:51 -0800 |
commit | db3c51d3a02864594c23f25b9e18825327703643 (patch) | |
tree | 137040e40f0028f2969ace9acece30fa3573ee2f /src/arch/x86/process.hh | |
parent | c3d7d7ed0e3931d549a14ef8b32a1619861f3ef0 (diff) | |
download | gem5-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.hh | 14 |
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); }; |