summaryrefslogtreecommitdiff
path: root/src/arch/x86/process.hh
diff options
context:
space:
mode:
authorVince Weaver <vince@csl.cornell.edu>2009-11-04 00:47:12 -0500
committerVince Weaver <vince@csl.cornell.edu>2009-11-04 00:47:12 -0500
commita1042db29098da395d0de96c652c41904feb425a (patch)
treea6ce96e097b8082c6404c819851f0cbe86fa8ca9 /src/arch/x86/process.hh
parent9b0a747dd41d3383769be1cd737733902875a528 (diff)
downloadgem5-a1042db29098da395d0de96c652c41904feb425a.tar.xz
X86: Enable x86_64 vsyscall support
64-bit vsyscall is different than 32-bit. There are only two syscalls, time and gettimeofday. On a real system, there is complicated code that implements these without entering the kernel. That would be complicated to implement in m5. Instead we just place code that calls the regular syscalls (this is how tools such as valgrind handle this case). This is needed for the perlbmk spec2k benchmark.
Diffstat (limited to 'src/arch/x86/process.hh')
-rw-r--r--src/arch/x86/process.hh10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/arch/x86/process.hh b/src/arch/x86/process.hh
index 4d031bd5a..3ad2abe08 100644
--- a/src/arch/x86/process.hh
+++ b/src/arch/x86/process.hh
@@ -101,6 +101,16 @@ namespace X86ISA
X86_64LiveProcess(LiveProcessParams *params, ObjectFile *objFile,
SyscallDesc *_syscallDescs, int _numSyscallDescs);
+ class VSyscallPage
+ {
+ public:
+ Addr base;
+ Addr size;
+ Addr vtimeOffset;
+ Addr vgettimeofdayOffset;
+ };
+ VSyscallPage vsyscallPage;
+
public:
void argsInit(int intSize, int pageSize);
void startup();