process.cc revision 2458
110037SARM gem5 Developers/* 210037SARM gem5 Developers * Copyright (c) 2003-2005 The Regents of The University of Michigan 310037SARM gem5 Developers * All rights reserved. 410037SARM gem5 Developers * 510037SARM gem5 Developers * Redistribution and use in source and binary forms, with or without 610037SARM gem5 Developers * modification, are permitted provided that the following conditions are 710037SARM gem5 Developers * met: redistributions of source code must retain the above copyright 810037SARM gem5 Developers * notice, this list of conditions and the following disclaimer; 910037SARM gem5 Developers * redistributions in binary form must reproduce the above copyright 1010037SARM gem5 Developers * notice, this list of conditions and the following disclaimer in the 1110037SARM gem5 Developers * documentation and/or other materials provided with the distribution; 1210037SARM gem5 Developers * neither the name of the copyright holders nor the names of its 1310037SARM gem5 Developers * contributors may be used to endorse or promote products derived from 1410037SARM gem5 Developers * this software without specific prior written permission. 1510037SARM gem5 Developers * 1610037SARM gem5 Developers * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1710037SARM gem5 Developers * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1810037SARM gem5 Developers * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1910037SARM gem5 Developers * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2010037SARM gem5 Developers * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2110037SARM gem5 Developers * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2210037SARM gem5 Developers * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2310037SARM gem5 Developers * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2410037SARM gem5 Developers * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2510037SARM gem5 Developers * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2610037SARM gem5 Developers * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2710037SARM gem5 Developers */ 2810037SARM gem5 Developers 2910037SARM gem5 Developers#include "arch/sparc/linux/process.hh" 3010037SARM gem5 Developers#include "arch/sparc/isa_traits.hh" 3110037SARM gem5 Developers 3210037SARM gem5 Developers#include "base/trace.hh" 3310037SARM gem5 Developers#include "cpu/exec_context.hh" 3410037SARM gem5 Developers#include "kern/linux/linux.hh" 3510037SARM gem5 Developers 3610037SARM gem5 Developers#include "sim/process.hh" 3710037SARM gem5 Developers#include "sim/syscall_emul.hh" 3810037SARM gem5 Developers 3910037SARM gem5 Developersusing namespace std; 4010037SARM gem5 Developersusing namespace SparcISA; 4110037SARM gem5 Developers 4210037SARM gem5 Developers 4310037SARM gem5 Developers/// Target uname() handler. 4410037SARM gem5 Developersstatic SyscallReturn 4510037SARM gem5 DevelopersunameFunc(SyscallDesc *desc, int callnum, Process *process, 4610037SARM gem5 Developers ExecContext *xc) 4710037SARM gem5 Developers{ 4810037SARM gem5 Developers TypedBufferArg<Linux::utsname> name(xc->getSyscallArg(0)); 4910037SARM gem5 Developers 5010037SARM gem5 Developers strcpy(name->sysname, "Linux"); 5110037SARM gem5 Developers strcpy(name->nodename, "m5.eecs.umich.edu"); 5210037SARM gem5 Developers strcpy(name->release, "2.4.20"); 5310037SARM gem5 Developers strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003"); 5410037SARM gem5 Developers strcpy(name->machine, "sparc"); 5510037SARM gem5 Developers 5610037SARM gem5 Developers name.copyOut(xc->getMemPort()); 5710037SARM gem5 Developers return 0; 5810037SARM gem5 Developers} 5910037SARM gem5 Developers 6012616Sgabeblack@google.comSyscallDesc SparcLinuxProcess::syscallDescs[] = { 6112616Sgabeblack@google.com /* 0 */ SyscallDesc("restart_syscall", unimplementedFunc), 6210037SARM gem5 Developers /* 1 */ SyscallDesc("exit", exitFunc), 6310037SARM gem5 Developers /* 2 */ SyscallDesc("fork", unimplementedFunc), 6410037SARM gem5 Developers /* 3 */ SyscallDesc("read", readFunc), 6510037SARM gem5 Developers /* 4 */ SyscallDesc("write", writeFunc), 6610037SARM gem5 Developers /* 5 */ SyscallDesc("open", openFunc<Linux>), 6710037SARM gem5 Developers /* 6 */ SyscallDesc("close", closeFunc), 6810037SARM gem5 Developers /* 7 */ SyscallDesc("wait4", unimplementedFunc), 6910037SARM gem5 Developers /* 8 */ SyscallDesc("creat", unimplementedFunc), 7010037SARM gem5 Developers /* 9 */ SyscallDesc("link", unimplementedFunc), 7110037SARM gem5 Developers /* 10 */ SyscallDesc("unlink", unlinkFunc), 7210037SARM gem5 Developers /* 11 */ SyscallDesc("execv", unimplementedFunc), 7310037SARM gem5 Developers /* 12 */ SyscallDesc("chdir", unimplementedFunc), 7410037SARM gem5 Developers /* 13 */ SyscallDesc("chown", chownFunc), 7510037SARM gem5 Developers /* 14 */ SyscallDesc("mknod", unimplementedFunc), 7612616Sgabeblack@google.com /* 15 */ SyscallDesc("chmod", chmodFunc<Linux>), 7712616Sgabeblack@google.com /* 16 */ SyscallDesc("lchown", unimplementedFunc), 7810037SARM gem5 Developers /* 17 */ SyscallDesc("brk", obreakFunc), 7910037SARM gem5 Developers /* 18 */ SyscallDesc("perfctr", unimplementedFunc), 8010037SARM gem5 Developers /* 19 */ SyscallDesc("lseek", lseekFunc), 8110037SARM gem5 Developers /* 20 */ SyscallDesc("getpid", getpidFunc), 8210037SARM gem5 Developers /* 21 */ SyscallDesc("capget", unimplementedFunc), 8310037SARM gem5 Developers /* 22 */ SyscallDesc("capset", unimplementedFunc), 8410037SARM gem5 Developers /* 23 */ SyscallDesc("setuid", setuidFunc), 8510037SARM gem5 Developers /* 24 */ SyscallDesc("getuid", getuidFunc), 8610037SARM gem5 Developers /* 25 */ SyscallDesc("time", unimplementedFunc), 8710037SARM gem5 Developers /* 26 */ SyscallDesc("ptrace", unimplementedFunc), 8810037SARM gem5 Developers /* 27 */ SyscallDesc("alarm", unimplementedFunc), 8910037SARM gem5 Developers /* 28 */ SyscallDesc("sigaltstack", unimplementedFunc), 9010037SARM gem5 Developers /* 29 */ SyscallDesc("pause", unimplementedFunc), 9110037SARM gem5 Developers /* 30 */ SyscallDesc("utime", unimplementedFunc), 9210037SARM gem5 Developers /* 31 */ SyscallDesc("lchown32", unimplementedFunc), 9310037SARM gem5 Developers /* 32 */ SyscallDesc("fchown32", unimplementedFunc), 9410037SARM gem5 Developers /* 33 */ SyscallDesc("access", unimplementedFunc), 9512616Sgabeblack@google.com /* 34 */ SyscallDesc("nice", unimplementedFunc), 9612616Sgabeblack@google.com /* 35 */ SyscallDesc("chown32", unimplementedFunc), 9710037SARM gem5 Developers /* 36 */ SyscallDesc("sync", unimplementedFunc), 9810037SARM gem5 Developers /* 37 */ SyscallDesc("kill", unimplementedFunc), 9910037SARM gem5 Developers /* 38 */ SyscallDesc("stat", unimplementedFunc), 10010037SARM gem5 Developers /* 39 */ SyscallDesc("sendfile", unimplementedFunc), 10110037SARM gem5 Developers /* 40 */ SyscallDesc("lstat", unimplementedFunc), 10210037SARM gem5 Developers /* 41 */ SyscallDesc("dup", unimplementedFunc), 10310037SARM gem5 Developers /* 42 */ SyscallDesc("pipe", pipePseudoFunc), 10410037SARM gem5 Developers /* 43 */ SyscallDesc("times", unimplementedFunc), 10510037SARM gem5 Developers /* 44 */ SyscallDesc("getuid32", unimplementedFunc), 10610037SARM gem5 Developers /* 45 */ SyscallDesc("umount2", unimplementedFunc), 10710037SARM gem5 Developers /* 46 */ SyscallDesc("setgid", unimplementedFunc), 10810037SARM gem5 Developers /* 47 */ SyscallDesc("getgid", getgidFunc), 10910037SARM gem5 Developers /* 48 */ SyscallDesc("signal", unimplementedFunc), 11010037SARM gem5 Developers /* 49 */ SyscallDesc("geteuid", geteuidFunc), 11110037SARM gem5 Developers /* 50 */ SyscallDesc("getegid", getegidFunc), 11210037SARM gem5 Developers /* 51 */ SyscallDesc("acct", unimplementedFunc), 11310037SARM gem5 Developers /* 52 */ SyscallDesc("memory_ordering", unimplementedFunc), 11412616Sgabeblack@google.com /* 53 */ SyscallDesc("getgid32", unimplementedFunc), 11512616Sgabeblack@google.com /* 54 */ SyscallDesc("ioctl", unimplementedFunc), 11610037SARM gem5 Developers /* 55 */ SyscallDesc("reboot", unimplementedFunc), 11710037SARM gem5 Developers /* 56 */ SyscallDesc("mmap2", unimplementedFunc), 11810037SARM gem5 Developers /* 57 */ SyscallDesc("symlink", unimplementedFunc), 11910037SARM gem5 Developers /* 58 */ SyscallDesc("readlink", unimplementedFunc), 12010037SARM gem5 Developers /* 59 */ SyscallDesc("execve", unimplementedFunc), 12110037SARM gem5 Developers /* 60 */ SyscallDesc("umask", unimplementedFunc), 12210037SARM gem5 Developers /* 61 */ SyscallDesc("chroot", unimplementedFunc), 12310037SARM gem5 Developers /* 62 */ SyscallDesc("fstat", unimplementedFunc), 12410037SARM gem5 Developers /* 63 */ SyscallDesc("fstat64", unimplementedFunc), 12510037SARM gem5 Developers /* 64 */ SyscallDesc("getpagesize", unimplementedFunc), 12610037SARM gem5 Developers /* 65 */ SyscallDesc("msync", unimplementedFunc), 12710037SARM gem5 Developers /* 66 */ SyscallDesc("vfork", unimplementedFunc), 12812616Sgabeblack@google.com /* 67 */ SyscallDesc("pread64", unimplementedFunc), 12912616Sgabeblack@google.com /* 68 */ SyscallDesc("pwrite64", unimplementedFunc), 13010037SARM gem5 Developers /* 69 */ SyscallDesc("geteuid32", unimplementedFunc), 13110037SARM gem5 Developers /* 70 */ SyscallDesc("getdgid32", unimplementedFunc), 13210037SARM gem5 Developers /* 71 */ SyscallDesc("mmap", unimplementedFunc), 13310037SARM gem5 Developers /* 72 */ SyscallDesc("setreuid32", unimplementedFunc), 13410037SARM gem5 Developers /* 73 */ SyscallDesc("munmap", unimplementedFunc), 13510037SARM gem5 Developers /* 74 */ SyscallDesc("mprotect", unimplementedFunc), 13610037SARM gem5 Developers /* 75 */ SyscallDesc("madvise", unimplementedFunc), 13710037SARM gem5 Developers /* 76 */ SyscallDesc("vhangup", unimplementedFunc), 13810037SARM gem5 Developers /* 77 */ SyscallDesc("truncate64", unimplementedFunc), 13910037SARM gem5 Developers /* 78 */ SyscallDesc("mincore", unimplementedFunc), 14010037SARM gem5 Developers /* 79 */ SyscallDesc("getgroups", unimplementedFunc), 14110037SARM gem5 Developers /* 80 */ SyscallDesc("setgroups", unimplementedFunc), 14210037SARM gem5 Developers /* 81 */ SyscallDesc("getpgrp", unimplementedFunc), 14310037SARM gem5 Developers /* 82 */ SyscallDesc("setgroups32", unimplementedFunc), 14412616Sgabeblack@google.com /* 83 */ SyscallDesc("setitimer", unimplementedFunc), 14512616Sgabeblack@google.com /* 84 */ SyscallDesc("ftruncate64", unimplementedFunc), 14610037SARM gem5 Developers /* 85 */ SyscallDesc("swapon", unimplementedFunc), 14710037SARM gem5 Developers /* 86 */ SyscallDesc("getitimer", unimplementedFunc), 14810037SARM gem5 Developers /* 87 */ SyscallDesc("setuid32", unimplementedFunc), 14910037SARM gem5 Developers /* 88 */ SyscallDesc("sethostname", unimplementedFunc), 15010037SARM gem5 Developers /* 89 */ SyscallDesc("setgid32", unimplementedFunc), 15110037SARM gem5 Developers /* 90 */ SyscallDesc("dup2", unimplementedFunc), 15210037SARM gem5 Developers /* 91 */ SyscallDesc("setfsuid32", unimplementedFunc), 15310037SARM gem5 Developers /* 92 */ SyscallDesc("fcntl", unimplementedFunc), 15410037SARM gem5 Developers /* 93 */ SyscallDesc("select", unimplementedFunc), 15510037SARM gem5 Developers /* 94 */ SyscallDesc("setfsgid32", unimplementedFunc), 15610037SARM gem5 Developers /* 95 */ SyscallDesc("fsync", unimplementedFunc), 15710037SARM gem5 Developers /* 96 */ SyscallDesc("setpriority", unimplementedFunc), 15810037SARM gem5 Developers /* 97 */ SyscallDesc("socket", unimplementedFunc), 15910037SARM gem5 Developers /* 98 */ SyscallDesc("connect", unimplementedFunc), 16010037SARM gem5 Developers /* 99 */ SyscallDesc("accept", unimplementedFunc), 16112616Sgabeblack@google.com /* 100 */ SyscallDesc("getpriority", unimplementedFunc), 16212616Sgabeblack@google.com /* 101 */ SyscallDesc("rt_sigreturn", unimplementedFunc), 16310037SARM gem5 Developers /* 102 */ SyscallDesc("rt_sigaction", unimplementedFunc), 16410037SARM gem5 Developers /* 103 */ SyscallDesc("rt_sigprocmask", unimplementedFunc), 16510037SARM gem5 Developers /* 104 */ SyscallDesc("rt_sigpending", unimplementedFunc), 16610037SARM gem5 Developers /* 105 */ SyscallDesc("rt_sigtimedwait", unimplementedFunc), 16710037SARM gem5 Developers /* 106 */ SyscallDesc("rt_sigqueueinfo", unimplementedFunc), 16810037SARM gem5 Developers /* 107 */ SyscallDesc("rt_sigsuspend", unimplementedFunc), 16910037SARM gem5 Developers /* 108 */ SyscallDesc("setresuid", unimplementedFunc), 17010037SARM gem5 Developers /* 109 */ SyscallDesc("getresuid", unimplementedFunc), 17110037SARM gem5 Developers /* 110 */ SyscallDesc("setresgid", unimplementedFunc), 17210037SARM gem5 Developers /* 111 */ SyscallDesc("getresgid", unimplementedFunc), 17310037SARM gem5 Developers /* 112 */ SyscallDesc("setregid32", unimplementedFunc), 17410037SARM gem5 Developers /* 113 */ SyscallDesc("recvmsg", unimplementedFunc), 17510037SARM gem5 Developers /* 114 */ SyscallDesc("sendmsg", unimplementedFunc), 17612616Sgabeblack@google.com /* 115 */ SyscallDesc("getgroups32", unimplementedFunc), 17712616Sgabeblack@google.com /* 116 */ SyscallDesc("gettimeofday", unimplementedFunc), 17810037SARM gem5 Developers /* 117 */ SyscallDesc("getrusage", unimplementedFunc), 17910037SARM gem5 Developers /* 118 */ SyscallDesc("getsockopt", unimplementedFunc), 18010037SARM gem5 Developers /* 119 */ SyscallDesc("getcwd", unimplementedFunc), 18110037SARM gem5 Developers /* 120 */ SyscallDesc("readv", unimplementedFunc), 18210037SARM gem5 Developers /* 121 */ SyscallDesc("writev", unimplementedFunc), 18310037SARM gem5 Developers /* 122 */ SyscallDesc("settimeofday", unimplementedFunc), 18410037SARM gem5 Developers /* 123 */ SyscallDesc("fchown", unimplementedFunc), 18510037SARM gem5 Developers /* 124 */ SyscallDesc("fchmod", unimplementedFunc), 18610037SARM gem5 Developers /* 125 */ SyscallDesc("recvfrom", unimplementedFunc), 18710037SARM gem5 Developers /* 126 */ SyscallDesc("setreuid", unimplementedFunc), 18810037SARM gem5 Developers /* 127 */ SyscallDesc("setregid", unimplementedFunc), 18910037SARM gem5 Developers /* 128 */ SyscallDesc("rename", unimplementedFunc), 19010037SARM gem5 Developers /* 129 */ SyscallDesc("truncate", unimplementedFunc), 19110037SARM gem5 Developers /* 130 */ SyscallDesc("ftruncate", unimplementedFunc), 19210037SARM gem5 Developers /* 131 */ SyscallDesc("flock", unimplementedFunc), 19312616Sgabeblack@google.com /* 132 */ SyscallDesc("lstat64", unimplementedFunc), 19412616Sgabeblack@google.com /* 133 */ SyscallDesc("sendto", unimplementedFunc), 19510037SARM gem5 Developers /* 134 */ SyscallDesc("shutdown", unimplementedFunc), 19610037SARM gem5 Developers /* 135 */ SyscallDesc("socketpair", unimplementedFunc), 19710037SARM gem5 Developers /* 136 */ SyscallDesc("mkdir", unimplementedFunc), 19810037SARM gem5 Developers /* 137 */ SyscallDesc("rmdir", unimplementedFunc), 19910037SARM gem5 Developers /* 138 */ SyscallDesc("utimes", unimplementedFunc), 20010037SARM gem5 Developers /* 139 */ SyscallDesc("stat64", unimplementedFunc), 20110037SARM gem5 Developers /* 140 */ SyscallDesc("sendfile64", unimplementedFunc), 20210037SARM gem5 Developers /* 141 */ SyscallDesc("getpeername", unimplementedFunc), 20310037SARM gem5 Developers /* 142 */ SyscallDesc("futex", unimplementedFunc), 20410037SARM gem5 Developers /* 143 */ SyscallDesc("gettid", unimplementedFunc), 20510037SARM gem5 Developers /* 144 */ SyscallDesc("getrlimit", unimplementedFunc), 20610037SARM gem5 Developers /* 145 */ SyscallDesc("setrlimit", unimplementedFunc), 20710037SARM gem5 Developers /* 146 */ SyscallDesc("pivot_root", unimplementedFunc), 20810037SARM gem5 Developers /* 147 */ SyscallDesc("prctl", unimplementedFunc), 20912616Sgabeblack@google.com /* 148 */ SyscallDesc("pciconfig_read", unimplementedFunc), 21012616Sgabeblack@google.com /* 149 */ SyscallDesc("pciconfig_write", unimplementedFunc), 21110037SARM gem5 Developers /* 150 */ SyscallDesc("getsockname", unimplementedFunc), 21210037SARM gem5 Developers /* 151 */ SyscallDesc("inotify_init", unimplementedFunc), 21310037SARM gem5 Developers /* 152 */ SyscallDesc("inotify_add_watch", unimplementedFunc), 21410037SARM gem5 Developers /* 153 */ SyscallDesc("poll", unimplementedFunc), 21510037SARM gem5 Developers /* 154 */ SyscallDesc("getdents64", unimplementedFunc), 21610037SARM gem5 Developers /* 155 */ SyscallDesc("fcntl64", unimplementedFunc), 21710037SARM gem5 Developers /* 156 */ SyscallDesc("inotify_rm_watch", unimplementedFunc), 21810037SARM gem5 Developers /* 157 */ SyscallDesc("statfs", unimplementedFunc), 21910037SARM gem5 Developers /* 158 */ SyscallDesc("fstatfs", unimplementedFunc), 22010037SARM gem5 Developers /* 159 */ SyscallDesc("umount", unimplementedFunc), 22110037SARM gem5 Developers /* 160 */ SyscallDesc("sched_set_affinity", unimplementedFunc), 22210037SARM gem5 Developers /* 161 */ SyscallDesc("sched_get_affinity", unimplementedFunc), 22310037SARM gem5 Developers /* 162 */ SyscallDesc("getdomainname", unimplementedFunc), 22410037SARM gem5 Developers /* 163 */ SyscallDesc("setdomainname", unimplementedFunc), 22510037SARM gem5 Developers /* 164 */ SyscallDesc("utrap_install", unimplementedFunc), 22610037SARM gem5 Developers /* 165 */ SyscallDesc("quotactl", unimplementedFunc), 22710037SARM gem5 Developers /* 166 */ SyscallDesc("set_tid_address", unimplementedFunc), 22812616Sgabeblack@google.com /* 167 */ SyscallDesc("mount", unimplementedFunc), 22912616Sgabeblack@google.com /* 168 */ SyscallDesc("ustat", unimplementedFunc), 23010037SARM gem5 Developers /* 169 */ SyscallDesc("setxattr", unimplementedFunc), 23110037SARM gem5 Developers /* 170 */ SyscallDesc("lsetxattr", unimplementedFunc), 23210037SARM gem5 Developers /* 171 */ SyscallDesc("fsetxattr", unimplementedFunc), 23310037SARM gem5 Developers /* 172 */ SyscallDesc("getxattr", unimplementedFunc), 23410037SARM gem5 Developers /* 173 */ SyscallDesc("lgetxattr", unimplementedFunc), 23510037SARM gem5 Developers /* 174 */ SyscallDesc("getdents", unimplementedFunc), 23610037SARM gem5 Developers /* 175 */ SyscallDesc("setsid", unimplementedFunc), 23710037SARM gem5 Developers /* 176 */ SyscallDesc("fchdir", unimplementedFunc), 23810037SARM gem5 Developers /* 177 */ SyscallDesc("fgetxattr", unimplementedFunc), 23910037SARM gem5 Developers /* 178 */ SyscallDesc("listxattr", unimplementedFunc), 24010037SARM gem5 Developers /* 179 */ SyscallDesc("llistxattr", unimplementedFunc), 24110037SARM gem5 Developers /* 180 */ SyscallDesc("flistxattr", unimplementedFunc), 24210037SARM gem5 Developers /* 181 */ SyscallDesc("removexattr", unimplementedFunc), 24310037SARM gem5 Developers /* 182 */ SyscallDesc("lremovexattr", unimplementedFunc), 24410037SARM gem5 Developers /* 183 */ SyscallDesc("sigpending", unimplementedFunc), 24510037SARM gem5 Developers /* 184 */ SyscallDesc("query_module", unimplementedFunc), 24612616Sgabeblack@google.com /* 185 */ SyscallDesc("setpgid", unimplementedFunc), 24712616Sgabeblack@google.com /* 186 */ SyscallDesc("fremovexattr", unimplementedFunc), 24810037SARM gem5 Developers /* 187 */ SyscallDesc("tkill", unimplementedFunc), 24910037SARM gem5 Developers /* 188 */ SyscallDesc("exit_group", unimplementedFunc), 25010037SARM gem5 Developers /* 189 */ SyscallDesc("uname", unameFunc), 25110037SARM gem5 Developers /* 190 */ SyscallDesc("init_module", unimplementedFunc), 25210037SARM gem5 Developers /* 191 */ SyscallDesc("personality", unimplementedFunc), 25310037SARM gem5 Developers /* 192 */ SyscallDesc("remap_file_pages", unimplementedFunc), 25410037SARM gem5 Developers /* 193 */ SyscallDesc("epoll_create", unimplementedFunc), 25510037SARM gem5 Developers /* 194 */ SyscallDesc("epoll_ctl", unimplementedFunc), 25610037SARM gem5 Developers /* 195 */ SyscallDesc("epoll_wait", unimplementedFunc), 25710037SARM gem5 Developers /* 196 */ SyscallDesc("ioprio_set", unimplementedFunc), 25810037SARM gem5 Developers /* 197 */ SyscallDesc("getppid", getppidFunc), 25910037SARM gem5 Developers /* 198 */ SyscallDesc("sigaction", unimplementedFunc), 26010037SARM gem5 Developers /* 199 */ SyscallDesc("sgetmask", unimplementedFunc), 26110037SARM gem5 Developers /* 200 */ SyscallDesc("ssetmask", unimplementedFunc), 26210037SARM gem5 Developers /* 201 */ SyscallDesc("sigsuspend", unimplementedFunc), 26312616Sgabeblack@google.com /* 202 */ SyscallDesc("oldlstat", unimplementedFunc), 26412616Sgabeblack@google.com /* 203 */ SyscallDesc("uselib", unimplementedFunc), 26510037SARM gem5 Developers /* 204 */ SyscallDesc("readdir", unimplementedFunc), 26610037SARM gem5 Developers /* 205 */ SyscallDesc("readahead", unimplementedFunc), 26710037SARM gem5 Developers /* 206 */ SyscallDesc("socketcall", unimplementedFunc), 26810037SARM gem5 Developers /* 207 */ SyscallDesc("syslog", unimplementedFunc), 26910037SARM gem5 Developers /* 208 */ SyscallDesc("lookup_dcookie", unimplementedFunc), 270 /* 209 */ SyscallDesc("fadvise64", unimplementedFunc), 271 /* 210 */ SyscallDesc("fadvise64_64", unimplementedFunc), 272 /* 211 */ SyscallDesc("tgkill", unimplementedFunc), 273 /* 212 */ SyscallDesc("waitpid", unimplementedFunc), 274 /* 213 */ SyscallDesc("swapoff", unimplementedFunc), 275 /* 214 */ SyscallDesc("sysinfo", unimplementedFunc), 276 /* 215 */ SyscallDesc("ipc", unimplementedFunc), 277 /* 216 */ SyscallDesc("sigreturn", unimplementedFunc), 278 /* 217 */ SyscallDesc("clone", unimplementedFunc), 279 /* 218 */ SyscallDesc("ioprio_get", unimplementedFunc), 280 /* 219 */ SyscallDesc("adjtimex", unimplementedFunc), 281 /* 220 */ SyscallDesc("sigprocmask", unimplementedFunc), 282 /* 221 */ SyscallDesc("create_module", unimplementedFunc), 283 /* 222 */ SyscallDesc("delete_module", unimplementedFunc), 284 /* 223 */ SyscallDesc("get_kernel_syms", unimplementedFunc), 285 /* 224 */ SyscallDesc("getpgid", unimplementedFunc), 286 /* 225 */ SyscallDesc("bdflush", unimplementedFunc), 287 /* 226 */ SyscallDesc("sysfs", unimplementedFunc), 288 /* 227 */ SyscallDesc("afs_syscall", unimplementedFunc), 289 /* 228 */ SyscallDesc("setfsuid", unimplementedFunc), 290 /* 229 */ SyscallDesc("setfsgid", unimplementedFunc), 291 /* 230 */ SyscallDesc("_newselect", unimplementedFunc), 292 /* 231 */ SyscallDesc("time", unimplementedFunc), 293 /* 232 */ SyscallDesc("oldstat", unimplementedFunc), 294 /* 233 */ SyscallDesc("stime", unimplementedFunc), 295 /* 234 */ SyscallDesc("statfs64", unimplementedFunc), 296 /* 235 */ SyscallDesc("fstatfs64", unimplementedFunc), 297 /* 236 */ SyscallDesc("_llseek", unimplementedFunc), 298 /* 237 */ SyscallDesc("mlock", unimplementedFunc), 299 /* 238 */ SyscallDesc("munlock", unimplementedFunc), 300 /* 239 */ SyscallDesc("mlockall", unimplementedFunc), 301 /* 240 */ SyscallDesc("munlockall", unimplementedFunc), 302 /* 241 */ SyscallDesc("sched_setparam", unimplementedFunc), 303 /* 242 */ SyscallDesc("sched_getparam", unimplementedFunc), 304 /* 243 */ SyscallDesc("sched_setscheduler", unimplementedFunc), 305 /* 244 */ SyscallDesc("sched_getscheduler", unimplementedFunc), 306 /* 245 */ SyscallDesc("sched_yield", unimplementedFunc), 307 /* 246 */ SyscallDesc("sched_get_priority_max", unimplementedFunc), 308 /* 247 */ SyscallDesc("sched_get_priority_min", unimplementedFunc), 309 /* 248 */ SyscallDesc("sched_rr_get_interval", unimplementedFunc), 310 /* 249 */ SyscallDesc("nanosleep", unimplementedFunc), 311 /* 250 */ SyscallDesc("mremap", unimplementedFunc), 312 /* 251 */ SyscallDesc("_sysctl", unimplementedFunc), 313 /* 252 */ SyscallDesc("getsid", unimplementedFunc), 314 /* 253 */ SyscallDesc("fdatasync", unimplementedFunc), 315 /* 254 */ SyscallDesc("nfsservctl", unimplementedFunc), 316 /* 255 */ SyscallDesc("aplib", unimplementedFunc), 317 /* 256 */ SyscallDesc("clock_settime", unimplementedFunc), 318 /* 257 */ SyscallDesc("clock_gettime", unimplementedFunc), 319 /* 258 */ SyscallDesc("clock_getres", unimplementedFunc), 320 /* 259 */ SyscallDesc("clock_nanosleep", unimplementedFunc), 321 /* 260 */ SyscallDesc("sched_getaffinity", unimplementedFunc), 322 /* 261 */ SyscallDesc("sched_setaffinity", unimplementedFunc), 323 /* 262 */ SyscallDesc("timer_settime", unimplementedFunc), 324 /* 263 */ SyscallDesc("timer_gettime", unimplementedFunc), 325 /* 264 */ SyscallDesc("timer_getoverrun", unimplementedFunc), 326 /* 265 */ SyscallDesc("timer_delete", unimplementedFunc), 327 /* 266 */ SyscallDesc("timer_create", unimplementedFunc), 328 /* 267 */ SyscallDesc("vserver", unimplementedFunc), 329 /* 268 */ SyscallDesc("io_setup", unimplementedFunc), 330 /* 269 */ SyscallDesc("io_destroy", unimplementedFunc), 331 /* 270 */ SyscallDesc("io_submit", unimplementedFunc), 332 /* 271 */ SyscallDesc("io_cancel", unimplementedFunc), 333 /* 272 */ SyscallDesc("io_getevents", unimplementedFunc), 334 /* 273 */ SyscallDesc("mq_open", unimplementedFunc), 335 /* 274 */ SyscallDesc("mq_unlink", unimplementedFunc), 336 /* 275 */ SyscallDesc("mq_timedsend", unimplementedFunc), 337 /* 276 */ SyscallDesc("mq_timedreceive", unimplementedFunc), 338 /* 277 */ SyscallDesc("mq_notify", unimplementedFunc), 339 /* 278 */ SyscallDesc("mq_getsetattr", unimplementedFunc), 340 /* 279 */ SyscallDesc("waitid", unimplementedFunc), 341 /* 280 */ SyscallDesc("sys_setaltroot", unimplementedFunc), 342 /* 281 */ SyscallDesc("add_key", unimplementedFunc), 343 /* 282 */ SyscallDesc("request_key", unimplementedFunc), 344 /* 283 */ SyscallDesc("keyctl", unimplementedFunc) 345}; 346 347SparcLinuxProcess::SparcLinuxProcess(const std::string &name, 348 ObjectFile *objFile, 349 System * system, 350 int stdin_fd, 351 int stdout_fd, 352 int stderr_fd, 353 std::vector<std::string> &argv, 354 std::vector<std::string> &envp) 355 : LiveProcess(name, objFile, system, 356 stdin_fd, stdout_fd, stderr_fd, argv, envp), 357 Num_Syscall_Descs(sizeof(syscallDescs) / sizeof(SyscallDesc)) 358{ 359 // The sparc syscall table must be <= 283 entries because that is all there 360 // is space for. 361 assert(Num_Syscall_Descs <= 283); 362} 363 364 365 366SyscallDesc* 367SparcLinuxProcess::getDesc(int callnum) 368{ 369 if (callnum < 0 || callnum > Num_Syscall_Descs) 370 return NULL; 371 return &syscallDescs[callnum]; 372} 373