process.hh (11884:e8536709cbc0) | process.hh (11886:43b882cada33) |
---|---|
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 --- 68 unchanged lines hidden (view full) --- 77 { return _gdtStart; } 78 79 Addr gdtSize() 80 { return _gdtSize; } 81 82 SyscallDesc* getDesc(int callnum); 83 84 void setSyscallReturn(ThreadContext *tc, SyscallReturn return_value); | 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 --- 68 unchanged lines hidden (view full) --- 77 { return _gdtStart; } 78 79 Addr gdtSize() 80 { return _gdtSize; } 81 82 SyscallDesc* getDesc(int callnum); 83 84 void setSyscallReturn(ThreadContext *tc, SyscallReturn return_value); |
85 void clone(ThreadContext *old_tc, ThreadContext *new_tc, 86 Process *process, TheISA::IntReg flags); 87 88 X86Process & 89 operator=(const X86Process &in) 90 { 91 if (this == &in) 92 return *this; 93 94 _gdtStart = in._gdtStart; 95 _gdtSize = in._gdtSize; 96 syscallDescs = in.syscallDescs; 97 98 return *this; 99 } |
|
85 }; 86 87 class X86_64Process : public X86Process 88 { 89 protected: 90 X86_64Process(ProcessParams *params, ObjectFile *objFile, 91 SyscallDesc *_syscallDescs, int _numSyscallDescs); 92 93 class VSyscallPage 94 { 95 public: 96 Addr base; 97 Addr size; 98 Addr vtimeOffset; 99 Addr vgettimeofdayOffset; | 100 }; 101 102 class X86_64Process : public X86Process 103 { 104 protected: 105 X86_64Process(ProcessParams *params, ObjectFile *objFile, 106 SyscallDesc *_syscallDescs, int _numSyscallDescs); 107 108 class VSyscallPage 109 { 110 public: 111 Addr base; 112 Addr size; 113 Addr vtimeOffset; 114 Addr vgettimeofdayOffset; |
115 116 VSyscallPage & 117 operator=(const VSyscallPage &in) 118 { 119 if (this == &in) 120 return *this; 121 122 base = in.base; 123 size = in.size; 124 vtimeOffset = in.vtimeOffset; 125 vgettimeofdayOffset = in.vgettimeofdayOffset; 126 127 return *this; 128 } |
|
100 }; 101 VSyscallPage vsyscallPage; 102 103 public: 104 void argsInit(int pageSize); 105 void initState(); 106 107 X86ISA::IntReg getSyscallArg(ThreadContext *tc, int &i); 108 /// Explicitly import the otherwise hidden getSyscallArg 109 using Process::getSyscallArg; 110 void setSyscallArg(ThreadContext *tc, int i, X86ISA::IntReg val); | 129 }; 130 VSyscallPage vsyscallPage; 131 132 public: 133 void argsInit(int pageSize); 134 void initState(); 135 136 X86ISA::IntReg getSyscallArg(ThreadContext *tc, int &i); 137 /// Explicitly import the otherwise hidden getSyscallArg 138 using Process::getSyscallArg; 139 void setSyscallArg(ThreadContext *tc, int i, X86ISA::IntReg val); |
140 void clone(ThreadContext *old_tc, ThreadContext *new_tc, 141 Process *process, TheISA::IntReg flags); |
|
111 }; 112 113 class I386Process : public X86Process 114 { 115 protected: 116 I386Process(ProcessParams *params, ObjectFile *objFile, 117 SyscallDesc *_syscallDescs, int _numSyscallDescs); 118 119 class VSyscallPage 120 { 121 public: 122 Addr base; 123 Addr size; 124 Addr vsyscallOffset; 125 Addr vsysexitOffset; | 142 }; 143 144 class I386Process : public X86Process 145 { 146 protected: 147 I386Process(ProcessParams *params, ObjectFile *objFile, 148 SyscallDesc *_syscallDescs, int _numSyscallDescs); 149 150 class VSyscallPage 151 { 152 public: 153 Addr base; 154 Addr size; 155 Addr vsyscallOffset; 156 Addr vsysexitOffset; |
157 158 VSyscallPage & 159 operator=(const VSyscallPage &in) 160 { 161 if (this == &in) 162 return *this; 163 164 base = in.base; 165 size = in.size; 166 vsyscallOffset = in.vsyscallOffset; 167 vsysexitOffset = in.vsysexitOffset; 168 169 return *this; 170 } |
|
126 }; 127 VSyscallPage vsyscallPage; 128 129 public: 130 void argsInit(int pageSize); 131 void initState(); 132 133 void syscall(int64_t callnum, ThreadContext *tc, Fault *fault); 134 X86ISA::IntReg getSyscallArg(ThreadContext *tc, int &i); 135 X86ISA::IntReg getSyscallArg(ThreadContext *tc, int &i, int width); 136 void setSyscallArg(ThreadContext *tc, int i, X86ISA::IntReg val); | 171 }; 172 VSyscallPage vsyscallPage; 173 174 public: 175 void argsInit(int pageSize); 176 void initState(); 177 178 void syscall(int64_t callnum, ThreadContext *tc, Fault *fault); 179 X86ISA::IntReg getSyscallArg(ThreadContext *tc, int &i); 180 X86ISA::IntReg getSyscallArg(ThreadContext *tc, int &i, int width); 181 void setSyscallArg(ThreadContext *tc, int i, X86ISA::IntReg val); |
182 void clone(ThreadContext *old_tc, ThreadContext *new_tc, 183 Process *process, TheISA::IntReg flags); |
|
137 }; 138 139 /** 140 * Declaration of architectural page table for x86. 141 * 142 * These page tables are stored in system memory and respect x86 specification. 143 */ 144 typedef MultiLevelPageTable<PageTableOps> ArchPageTable; 145 146} 147 148#endif // __ARCH_X86_PROCESS_HH__ | 184 }; 185 186 /** 187 * Declaration of architectural page table for x86. 188 * 189 * These page tables are stored in system memory and respect x86 specification. 190 */ 191 typedef MultiLevelPageTable<PageTableOps> ArchPageTable; 192 193} 194 195#endif // __ARCH_X86_PROCESS_HH__ |