process.hh (11320:42ecb523c64a) process.hh (11851:824055fe6b30)
1/*
2 * Copyright (c) 2007 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 41 unchanged lines hidden (view full) ---

50
51namespace X86ISA
52{
53 enum X86AuxiliaryVectorTypes {
54 M5_AT_SYSINFO = 32,
55 M5_AT_SYSINFO_EHDR = 33
56 };
57
1/*
2 * Copyright (c) 2007 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 41 unchanged lines hidden (view full) ---

50
51namespace X86ISA
52{
53 enum X86AuxiliaryVectorTypes {
54 M5_AT_SYSINFO = 32,
55 M5_AT_SYSINFO_EHDR = 33
56 };
57
58 class X86LiveProcess : public LiveProcess
58 class X86Process : public Process
59 {
60 protected:
61 Addr _gdtStart;
62 Addr _gdtSize;
63
64 SyscallDesc *syscallDescs;
65 const int numSyscallDescs;
66
59 {
60 protected:
61 Addr _gdtStart;
62 Addr _gdtSize;
63
64 SyscallDesc *syscallDescs;
65 const int numSyscallDescs;
66
67 X86LiveProcess(LiveProcessParams * params, ObjectFile *objFile,
68 SyscallDesc *_syscallDescs, int _numSyscallDescs);
67 X86Process(ProcessParams * params, ObjectFile *objFile,
68 SyscallDesc *_syscallDescs, int _numSyscallDescs);
69
70 template<class IntType>
71 void argsInit(int pageSize,
72 std::vector<AuxVector<IntType> > extraAuxvs);
73
74 public:
75 Addr gdtStart()
76 { return _gdtStart; }
77
78 Addr gdtSize()
79 { return _gdtSize; }
80
81 SyscallDesc* getDesc(int callnum);
82
83 void setSyscallReturn(ThreadContext *tc, SyscallReturn return_value);
84 };
85
69
70 template<class IntType>
71 void argsInit(int pageSize,
72 std::vector<AuxVector<IntType> > extraAuxvs);
73
74 public:
75 Addr gdtStart()
76 { return _gdtStart; }
77
78 Addr gdtSize()
79 { return _gdtSize; }
80
81 SyscallDesc* getDesc(int callnum);
82
83 void setSyscallReturn(ThreadContext *tc, SyscallReturn return_value);
84 };
85
86 class X86_64LiveProcess : public X86LiveProcess
86 class X86_64Process : public X86Process
87 {
88 protected:
87 {
88 protected:
89 X86_64LiveProcess(LiveProcessParams *params, ObjectFile *objFile,
90 SyscallDesc *_syscallDescs, int _numSyscallDescs);
89 X86_64Process(ProcessParams *params, ObjectFile *objFile,
90 SyscallDesc *_syscallDescs, int _numSyscallDescs);
91
92 class VSyscallPage
93 {
94 public:
95 Addr base;
96 Addr size;
97 Addr vtimeOffset;
98 Addr vgettimeofdayOffset;
99 };
100 VSyscallPage vsyscallPage;
101
102 public:
103 void argsInit(int intSize, int pageSize);
104 void initState();
105
106 X86ISA::IntReg getSyscallArg(ThreadContext *tc, int &i);
107 /// Explicitly import the otherwise hidden getSyscallArg
91
92 class VSyscallPage
93 {
94 public:
95 Addr base;
96 Addr size;
97 Addr vtimeOffset;
98 Addr vgettimeofdayOffset;
99 };
100 VSyscallPage vsyscallPage;
101
102 public:
103 void argsInit(int intSize, int pageSize);
104 void initState();
105
106 X86ISA::IntReg getSyscallArg(ThreadContext *tc, int &i);
107 /// Explicitly import the otherwise hidden getSyscallArg
108 using LiveProcess::getSyscallArg;
108 using Process::getSyscallArg;
109 void setSyscallArg(ThreadContext *tc, int i, X86ISA::IntReg val);
110 };
111
109 void setSyscallArg(ThreadContext *tc, int i, X86ISA::IntReg val);
110 };
111
112 class I386LiveProcess : public X86LiveProcess
112 class I386Process : public X86Process
113 {
114 protected:
113 {
114 protected:
115 I386LiveProcess(LiveProcessParams *params, ObjectFile *objFile,
116 SyscallDesc *_syscallDescs, int _numSyscallDescs);
115 I386Process(ProcessParams *params, ObjectFile *objFile,
116 SyscallDesc *_syscallDescs, int _numSyscallDescs);
117
118 class VSyscallPage
119 {
120 public:
121 Addr base;
122 Addr size;
123 Addr vsyscallOffset;
124 Addr vsysexitOffset;

--- 23 unchanged lines hidden ---
117
118 class VSyscallPage
119 {
120 public:
121 Addr base;
122 Addr size;
123 Addr vsyscallOffset;
124 Addr vsysexitOffset;

--- 23 unchanged lines hidden ---