process.cc (13569:47a2291177a7) process.cc (13570:b6484720c6a9)
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

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

217 return -EFAULT;
218 if (!gdt.copyOut(tc->getMemProxy()))
219 panic("Failed to copy out GDT for %s.\n", desc->name());
220
221 return 0;
222}
223
224static SyscallDesc syscallDescs64[] = {
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

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

217 return -EFAULT;
218 if (!gdt.copyOut(tc->getMemProxy()))
219 panic("Failed to copy out GDT for %s.\n", desc->name());
220
221 return 0;
222}
223
224static SyscallDesc syscallDescs64[] = {
225 /* 0 */ SyscallDesc("read", readFunc),
226 /* 1 */ SyscallDesc("write", writeFunc),
225 /* 0 */ SyscallDesc("read", readFunc<X86Linux64>),
226 /* 1 */ SyscallDesc("write", writeFunc<X86Linux64>),
227 /* 2 */ SyscallDesc("open", openFunc<X86Linux64>),
228 /* 3 */ SyscallDesc("close", closeFunc),
229 /* 4 */ SyscallDesc("stat", stat64Func<X86Linux64>),
230 /* 5 */ SyscallDesc("fstat", fstat64Func<X86Linux64>),
231 /* 6 */ SyscallDesc("lstat", lstat64Func<X86Linux64>),
227 /* 2 */ SyscallDesc("open", openFunc<X86Linux64>),
228 /* 3 */ SyscallDesc("close", closeFunc),
229 /* 4 */ SyscallDesc("stat", stat64Func<X86Linux64>),
230 /* 5 */ SyscallDesc("fstat", fstat64Func<X86Linux64>),
231 /* 6 */ SyscallDesc("lstat", lstat64Func<X86Linux64>),
232 /* 7 */ SyscallDesc("poll", unimplementedFunc),
232 /* 7 */ SyscallDesc("poll", pollFunc<X86Linux64>),
233 /* 8 */ SyscallDesc("lseek", lseekFunc),
234 /* 9 */ SyscallDesc("mmap", mmapFunc<X86Linux64>),
235 /* 10 */ SyscallDesc("mprotect", ignoreFunc),
236 /* 11 */ SyscallDesc("munmap", munmapFunc),
237 /* 12 */ SyscallDesc("brk", brkFunc),
238 /* 13 */ SyscallDesc("rt_sigaction", ignoreFunc, SyscallDesc::WarnOnce),
239 /* 14 */ SyscallDesc("rt_sigprocmask", ignoreFunc, SyscallDesc::WarnOnce),
240 /* 15 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
241 /* 16 */ SyscallDesc("ioctl", ioctlFunc<X86Linux64>),
242 /* 17 */ SyscallDesc("pread64", unimplementedFunc),
243 /* 18 */ SyscallDesc("pwrite64", pwrite64Func<X86Linux64>),
244 /* 19 */ SyscallDesc("readv", unimplementedFunc),
245 /* 20 */ SyscallDesc("writev", writevFunc<X86Linux64>),
246 /* 21 */ SyscallDesc("access", ignoreFunc),
247 /* 22 */ SyscallDesc("pipe", pipeFunc),
233 /* 8 */ SyscallDesc("lseek", lseekFunc),
234 /* 9 */ SyscallDesc("mmap", mmapFunc<X86Linux64>),
235 /* 10 */ SyscallDesc("mprotect", ignoreFunc),
236 /* 11 */ SyscallDesc("munmap", munmapFunc),
237 /* 12 */ SyscallDesc("brk", brkFunc),
238 /* 13 */ SyscallDesc("rt_sigaction", ignoreFunc, SyscallDesc::WarnOnce),
239 /* 14 */ SyscallDesc("rt_sigprocmask", ignoreFunc, SyscallDesc::WarnOnce),
240 /* 15 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
241 /* 16 */ SyscallDesc("ioctl", ioctlFunc<X86Linux64>),
242 /* 17 */ SyscallDesc("pread64", unimplementedFunc),
243 /* 18 */ SyscallDesc("pwrite64", pwrite64Func<X86Linux64>),
244 /* 19 */ SyscallDesc("readv", unimplementedFunc),
245 /* 20 */ SyscallDesc("writev", writevFunc<X86Linux64>),
246 /* 21 */ SyscallDesc("access", ignoreFunc),
247 /* 22 */ SyscallDesc("pipe", pipeFunc),
248 /* 23 */ SyscallDesc("select", unimplementedFunc),
248 /* 23 */ SyscallDesc("select", selectFunc<X86Linux64>),
249 /* 24 */ SyscallDesc("sched_yield", ignoreFunc),
250 /* 25 */ SyscallDesc("mremap", mremapFunc<X86Linux64>),
251 /* 26 */ SyscallDesc("msync", unimplementedFunc),
252 /* 27 */ SyscallDesc("mincore", unimplementedFunc),
253 /* 28 */ SyscallDesc("madvise", ignoreFunc),
254 /* 29 */ SyscallDesc("shmget", unimplementedFunc),
255 /* 30 */ SyscallDesc("shmat", unimplementedFunc),
256 /* 31 */ SyscallDesc("shmctl", unimplementedFunc),
257 /* 32 */ SyscallDesc("dup", dupFunc),
258 /* 33 */ SyscallDesc("dup2", dup2Func),
259 /* 34 */ SyscallDesc("pause", unimplementedFunc),
260 /* 35 */ SyscallDesc("nanosleep", ignoreFunc, SyscallDesc::WarnOnce),
261 /* 36 */ SyscallDesc("getitimer", unimplementedFunc),
262 /* 37 */ SyscallDesc("alarm", unimplementedFunc),
263 /* 38 */ SyscallDesc("setitimer", unimplementedFunc),
264 /* 39 */ SyscallDesc("getpid", getpidFunc),
265 /* 40 */ SyscallDesc("sendfile", unimplementedFunc),
266 /* 41 */ SyscallDesc("socket", socketFunc<X86Linux64>),
267 /* 42 */ SyscallDesc("connect", connectFunc),
249 /* 24 */ SyscallDesc("sched_yield", ignoreFunc),
250 /* 25 */ SyscallDesc("mremap", mremapFunc<X86Linux64>),
251 /* 26 */ SyscallDesc("msync", unimplementedFunc),
252 /* 27 */ SyscallDesc("mincore", unimplementedFunc),
253 /* 28 */ SyscallDesc("madvise", ignoreFunc),
254 /* 29 */ SyscallDesc("shmget", unimplementedFunc),
255 /* 30 */ SyscallDesc("shmat", unimplementedFunc),
256 /* 31 */ SyscallDesc("shmctl", unimplementedFunc),
257 /* 32 */ SyscallDesc("dup", dupFunc),
258 /* 33 */ SyscallDesc("dup2", dup2Func),
259 /* 34 */ SyscallDesc("pause", unimplementedFunc),
260 /* 35 */ SyscallDesc("nanosleep", ignoreFunc, SyscallDesc::WarnOnce),
261 /* 36 */ SyscallDesc("getitimer", unimplementedFunc),
262 /* 37 */ SyscallDesc("alarm", unimplementedFunc),
263 /* 38 */ SyscallDesc("setitimer", unimplementedFunc),
264 /* 39 */ SyscallDesc("getpid", getpidFunc),
265 /* 40 */ SyscallDesc("sendfile", unimplementedFunc),
266 /* 41 */ SyscallDesc("socket", socketFunc<X86Linux64>),
267 /* 42 */ SyscallDesc("connect", connectFunc),
268 /* 43 */ SyscallDesc("accept", unimplementedFunc),
268 /* 43 */ SyscallDesc("accept", acceptFunc<X86Linux64>),
269 /* 44 */ SyscallDesc("sendto", sendtoFunc),
270 /* 45 */ SyscallDesc("recvfrom", recvfromFunc),
271 /* 46 */ SyscallDesc("sendmsg", sendmsgFunc),
272 /* 47 */ SyscallDesc("recvmsg", recvmsgFunc),
273 /* 48 */ SyscallDesc("shutdown", shutdownFunc),
274 /* 49 */ SyscallDesc("bind", bindFunc),
275 /* 50 */ SyscallDesc("listen", listenFunc),
276 /* 51 */ SyscallDesc("getsockname", unimplementedFunc),
277 /* 52 */ SyscallDesc("getpeername", unimplementedFunc),
278 /* 53 */ SyscallDesc("socketpair", socketpairFunc<X86Linux64>),
279 /* 54 */ SyscallDesc("setsockopt", unimplementedFunc),
280 /* 55 */ SyscallDesc("getsockopt", unimplementedFunc),
281 /* 56 */ SyscallDesc("clone", cloneFunc<X86Linux64>),
282 /* 57 */ SyscallDesc("fork", unimplementedFunc),
283 /* 58 */ SyscallDesc("vfork", unimplementedFunc),
284 /* 59 */ SyscallDesc("execve", execveFunc<X86Linux64>),
285 /* 60 */ SyscallDesc("exit", exitFunc),
269 /* 44 */ SyscallDesc("sendto", sendtoFunc),
270 /* 45 */ SyscallDesc("recvfrom", recvfromFunc),
271 /* 46 */ SyscallDesc("sendmsg", sendmsgFunc),
272 /* 47 */ SyscallDesc("recvmsg", recvmsgFunc),
273 /* 48 */ SyscallDesc("shutdown", shutdownFunc),
274 /* 49 */ SyscallDesc("bind", bindFunc),
275 /* 50 */ SyscallDesc("listen", listenFunc),
276 /* 51 */ SyscallDesc("getsockname", unimplementedFunc),
277 /* 52 */ SyscallDesc("getpeername", unimplementedFunc),
278 /* 53 */ SyscallDesc("socketpair", socketpairFunc<X86Linux64>),
279 /* 54 */ SyscallDesc("setsockopt", unimplementedFunc),
280 /* 55 */ SyscallDesc("getsockopt", unimplementedFunc),
281 /* 56 */ SyscallDesc("clone", cloneFunc<X86Linux64>),
282 /* 57 */ SyscallDesc("fork", unimplementedFunc),
283 /* 58 */ SyscallDesc("vfork", unimplementedFunc),
284 /* 59 */ SyscallDesc("execve", execveFunc<X86Linux64>),
285 /* 60 */ SyscallDesc("exit", exitFunc),
286 /* 61 */ SyscallDesc("wait4", unimplementedFunc),
286 /* 61 */ SyscallDesc("wait4", wait4Func<X86Linux64>),
287 /* 62 */ SyscallDesc("kill", unimplementedFunc),
288 /* 63 */ SyscallDesc("uname", unameFunc),
289 /* 64 */ SyscallDesc("semget", unimplementedFunc),
290 /* 65 */ SyscallDesc("semop", unimplementedFunc),
291 /* 66 */ SyscallDesc("semctl", unimplementedFunc),
292 /* 67 */ SyscallDesc("shmdt", unimplementedFunc),
293 /* 68 */ SyscallDesc("msgget", unimplementedFunc),
294 /* 69 */ SyscallDesc("msgsnd", unimplementedFunc),

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

553{
554 X86_64Process::clone(old_tc, new_tc, (X86_64Process*)process, flags);
555}
556
557static SyscallDesc syscallDescs32[] = {
558 /* 0 */ SyscallDesc("restart_syscall", unimplementedFunc),
559 /* 1 */ SyscallDesc("exit", exitFunc),
560 /* 2 */ SyscallDesc("fork", unimplementedFunc),
287 /* 62 */ SyscallDesc("kill", unimplementedFunc),
288 /* 63 */ SyscallDesc("uname", unameFunc),
289 /* 64 */ SyscallDesc("semget", unimplementedFunc),
290 /* 65 */ SyscallDesc("semop", unimplementedFunc),
291 /* 66 */ SyscallDesc("semctl", unimplementedFunc),
292 /* 67 */ SyscallDesc("shmdt", unimplementedFunc),
293 /* 68 */ SyscallDesc("msgget", unimplementedFunc),
294 /* 69 */ SyscallDesc("msgsnd", unimplementedFunc),

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

553{
554 X86_64Process::clone(old_tc, new_tc, (X86_64Process*)process, flags);
555}
556
557static SyscallDesc syscallDescs32[] = {
558 /* 0 */ SyscallDesc("restart_syscall", unimplementedFunc),
559 /* 1 */ SyscallDesc("exit", exitFunc),
560 /* 2 */ SyscallDesc("fork", unimplementedFunc),
561 /* 3 */ SyscallDesc("read", readFunc),
562 /* 4 */ SyscallDesc("write", writeFunc),
561 /* 3 */ SyscallDesc("read", readFunc<X86Linux32>),
562 /* 4 */ SyscallDesc("write", writeFunc<X86Linux32>),
563 /* 5 */ SyscallDesc("open", openFunc<X86Linux32>),
564 /* 6 */ SyscallDesc("close", closeFunc),
565 /* 7 */ SyscallDesc("waitpid", unimplementedFunc),
566 /* 8 */ SyscallDesc("creat", unimplementedFunc),
567 /* 9 */ SyscallDesc("link", unimplementedFunc),
568 /* 10 */ SyscallDesc("unlink", unimplementedFunc),
569 /* 11 */ SyscallDesc("execve", execveFunc<X86Linux32>),
570 /* 12 */ SyscallDesc("chdir", chdirFunc),

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

632 /* 74 */ SyscallDesc("sethostname", unimplementedFunc),
633 /* 75 */ SyscallDesc("setrlimit", ignoreFunc),
634 /* 76 */ SyscallDesc("getrlimit", getrlimitFunc<X86Linux32>),
635 /* 77 */ SyscallDesc("getrusage", getrusageFunc<X86Linux32>),
636 /* 78 */ SyscallDesc("gettimeofday", unimplementedFunc),
637 /* 79 */ SyscallDesc("settimeofday", unimplementedFunc),
638 /* 80 */ SyscallDesc("getgroups", unimplementedFunc),
639 /* 81 */ SyscallDesc("setgroups", unimplementedFunc),
563 /* 5 */ SyscallDesc("open", openFunc<X86Linux32>),
564 /* 6 */ SyscallDesc("close", closeFunc),
565 /* 7 */ SyscallDesc("waitpid", unimplementedFunc),
566 /* 8 */ SyscallDesc("creat", unimplementedFunc),
567 /* 9 */ SyscallDesc("link", unimplementedFunc),
568 /* 10 */ SyscallDesc("unlink", unimplementedFunc),
569 /* 11 */ SyscallDesc("execve", execveFunc<X86Linux32>),
570 /* 12 */ SyscallDesc("chdir", chdirFunc),

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

632 /* 74 */ SyscallDesc("sethostname", unimplementedFunc),
633 /* 75 */ SyscallDesc("setrlimit", ignoreFunc),
634 /* 76 */ SyscallDesc("getrlimit", getrlimitFunc<X86Linux32>),
635 /* 77 */ SyscallDesc("getrusage", getrusageFunc<X86Linux32>),
636 /* 78 */ SyscallDesc("gettimeofday", unimplementedFunc),
637 /* 79 */ SyscallDesc("settimeofday", unimplementedFunc),
638 /* 80 */ SyscallDesc("getgroups", unimplementedFunc),
639 /* 81 */ SyscallDesc("setgroups", unimplementedFunc),
640 /* 82 */ SyscallDesc("select", unimplementedFunc),
640 /* 82 */ SyscallDesc("select", selectFunc<X86Linux32>),
641 /* 83 */ SyscallDesc("symlink", unimplementedFunc),
642 /* 84 */ SyscallDesc("oldlstat", unimplementedFunc),
643 /* 85 */ SyscallDesc("readlink", readlinkFunc),
644 /* 86 */ SyscallDesc("uselib", unimplementedFunc),
645 /* 87 */ SyscallDesc("swapon", unimplementedFunc),
646 /* 88 */ SyscallDesc("reboot", unimplementedFunc),
647 /* 89 */ SyscallDesc("readdir", unimplementedFunc),
648 /* 90 */ SyscallDesc("mmap", unimplementedFunc),

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

664 /* 106 */ SyscallDesc("stat", unimplementedFunc),
665 /* 107 */ SyscallDesc("lstat", unimplementedFunc),
666 /* 108 */ SyscallDesc("fstat", unimplementedFunc),
667 /* 109 */ SyscallDesc("olduname", unimplementedFunc),
668 /* 110 */ SyscallDesc("iopl", unimplementedFunc),
669 /* 111 */ SyscallDesc("vhangup", unimplementedFunc),
670 /* 112 */ SyscallDesc("idle", unimplementedFunc),
671 /* 113 */ SyscallDesc("vm86old", unimplementedFunc),
641 /* 83 */ SyscallDesc("symlink", unimplementedFunc),
642 /* 84 */ SyscallDesc("oldlstat", unimplementedFunc),
643 /* 85 */ SyscallDesc("readlink", readlinkFunc),
644 /* 86 */ SyscallDesc("uselib", unimplementedFunc),
645 /* 87 */ SyscallDesc("swapon", unimplementedFunc),
646 /* 88 */ SyscallDesc("reboot", unimplementedFunc),
647 /* 89 */ SyscallDesc("readdir", unimplementedFunc),
648 /* 90 */ SyscallDesc("mmap", unimplementedFunc),

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

664 /* 106 */ SyscallDesc("stat", unimplementedFunc),
665 /* 107 */ SyscallDesc("lstat", unimplementedFunc),
666 /* 108 */ SyscallDesc("fstat", unimplementedFunc),
667 /* 109 */ SyscallDesc("olduname", unimplementedFunc),
668 /* 110 */ SyscallDesc("iopl", unimplementedFunc),
669 /* 111 */ SyscallDesc("vhangup", unimplementedFunc),
670 /* 112 */ SyscallDesc("idle", unimplementedFunc),
671 /* 113 */ SyscallDesc("vm86old", unimplementedFunc),
672 /* 114 */ SyscallDesc("wait4", unimplementedFunc),
672 /* 114 */ SyscallDesc("wait4", wait4Func<X86Linux32>),
673 /* 115 */ SyscallDesc("swapoff", unimplementedFunc),
674 /* 116 */ SyscallDesc("sysinfo", sysinfoFunc<X86Linux32>),
675 /* 117 */ SyscallDesc("ipc", unimplementedFunc),
676 /* 118 */ SyscallDesc("fsync", unimplementedFunc),
677 /* 119 */ SyscallDesc("sigreturn", unimplementedFunc),
678 /* 120 */ SyscallDesc("clone", cloneFunc<X86Linux32>),
679 /* 121 */ SyscallDesc("setdomainname", unimplementedFunc),
680 /* 122 */ SyscallDesc("uname", unameFunc),

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

722 /* 160 */ SyscallDesc("sched_get_priority_min", unimplementedFunc),
723 /* 161 */ SyscallDesc("sched_rr_get_interval", unimplementedFunc),
724 /* 162 */ SyscallDesc("nanosleep", ignoreFunc),
725 /* 163 */ SyscallDesc("mremap", unimplementedFunc),
726 /* 164 */ SyscallDesc("setresuid", ignoreFunc),
727 /* 165 */ SyscallDesc("getresuid", unimplementedFunc),
728 /* 166 */ SyscallDesc("vm86", unimplementedFunc),
729 /* 167 */ SyscallDesc("query_module", unimplementedFunc),
673 /* 115 */ SyscallDesc("swapoff", unimplementedFunc),
674 /* 116 */ SyscallDesc("sysinfo", sysinfoFunc<X86Linux32>),
675 /* 117 */ SyscallDesc("ipc", unimplementedFunc),
676 /* 118 */ SyscallDesc("fsync", unimplementedFunc),
677 /* 119 */ SyscallDesc("sigreturn", unimplementedFunc),
678 /* 120 */ SyscallDesc("clone", cloneFunc<X86Linux32>),
679 /* 121 */ SyscallDesc("setdomainname", unimplementedFunc),
680 /* 122 */ SyscallDesc("uname", unameFunc),

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

722 /* 160 */ SyscallDesc("sched_get_priority_min", unimplementedFunc),
723 /* 161 */ SyscallDesc("sched_rr_get_interval", unimplementedFunc),
724 /* 162 */ SyscallDesc("nanosleep", ignoreFunc),
725 /* 163 */ SyscallDesc("mremap", unimplementedFunc),
726 /* 164 */ SyscallDesc("setresuid", ignoreFunc),
727 /* 165 */ SyscallDesc("getresuid", unimplementedFunc),
728 /* 166 */ SyscallDesc("vm86", unimplementedFunc),
729 /* 167 */ SyscallDesc("query_module", unimplementedFunc),
730 /* 168 */ SyscallDesc("poll", unimplementedFunc),
730 /* 168 */ SyscallDesc("poll", pollFunc<X86Linux32>),
731 /* 169 */ SyscallDesc("nfsservctl", unimplementedFunc),
732 /* 170 */ SyscallDesc("setresgid", unimplementedFunc),
733 /* 171 */ SyscallDesc("getresgid", unimplementedFunc),
734 /* 172 */ SyscallDesc("prctl", unimplementedFunc),
735 /* 173 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
736 /* 174 */ SyscallDesc("rt_sigaction", ignoreFunc),
737 /* 175 */ SyscallDesc("rt_sigprocmask", ignoreFunc),
738 /* 176 */ SyscallDesc("rt_sigpending", unimplementedFunc),

--- 159 unchanged lines hidden ---
731 /* 169 */ SyscallDesc("nfsservctl", unimplementedFunc),
732 /* 170 */ SyscallDesc("setresgid", unimplementedFunc),
733 /* 171 */ SyscallDesc("getresgid", unimplementedFunc),
734 /* 172 */ SyscallDesc("prctl", unimplementedFunc),
735 /* 173 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
736 /* 174 */ SyscallDesc("rt_sigaction", ignoreFunc),
737 /* 175 */ SyscallDesc("rt_sigprocmask", ignoreFunc),
738 /* 176 */ SyscallDesc("rt_sigpending", unimplementedFunc),

--- 159 unchanged lines hidden ---