process.cc revision 2202
1545SN/A/* 22512SN/A * Copyright (c) 2003-2005 The Regents of The University of Michigan 3545SN/A * All rights reserved. 4545SN/A * 5545SN/A * Redistribution and use in source and binary forms, with or without 6545SN/A * modification, are permitted provided that the following conditions are 7545SN/A * met: redistributions of source code must retain the above copyright 8545SN/A * notice, this list of conditions and the following disclaimer; 9545SN/A * redistributions in binary form must reproduce the above copyright 10545SN/A * notice, this list of conditions and the following disclaimer in the 11545SN/A * documentation and/or other materials provided with the distribution; 12545SN/A * neither the name of the copyright holders nor the names of its 13545SN/A * contributors may be used to endorse or promote products derived from 14545SN/A * this software without specific prior written permission. 15545SN/A * 16545SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17545SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18545SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 19545SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 20545SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 21545SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 22545SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23545SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24545SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25545SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 26545SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272665Ssaidi@eecs.umich.edu */ 282665Ssaidi@eecs.umich.edu 292665Ssaidi@eecs.umich.edu#include "arch/sparc/common_syscall_emul.hh" 30545SN/A#include "arch/sparc/linux_process.hh" 31545SN/A#include "arch/sparc/isa_traits.hh" 323090Sstever@eecs.umich.edu 332657Ssaidi@eecs.umich.edu#include "base/trace.hh" 34545SN/A#include "cpu/exec_context.hh" 35679SN/A#include "kern/linux/linux.hh" 362901Ssaidi@eecs.umich.edu#include "mem/functional/functional.hh" 37545SN/A 382489SN/A#include "sim/process.hh" 392901Ssaidi@eecs.umich.edu#include "sim/syscall_emul.hh" 403401Sktlim@umich.edu 412489SN/Ausing namespace std; 422489SN/Ausing namespace SPARCISA; 432489SN/A 442489SN/A/// Target pipe() handler. Even though this is a generic Posix call, 453349Sbinkertn@umich.edu/// the Alpha return convention is funky, so that makes it 462489SN/A/// Alpha-specific. 473091Sstever@eecs.umich.eduSyscallReturn 482489SN/ApipeFunc(SyscallDesc *desc, int callnum, Process *process, 492489SN/A ExecContext *xc) 502489SN/A{ 514475Sstever@eecs.umich.edu int fds[2], sim_fds[2]; 522489SN/A int pipe_retval = pipe(fds); 534475Sstever@eecs.umich.edu 542521SN/A if (pipe_retval < 0) { 552489SN/A // error 562489SN/A return pipe_retval; 572489SN/A } 58545SN/A 59545SN/A sim_fds[0] = process->alloc_fd(fds[0]); 602384SN/A sim_fds[1] = process->alloc_fd(fds[1]); 612489SN/A 62545SN/A // Alpha Linux convention for pipe() is that fd[0] is returned as 63545SN/A // the return value of the function, and fd[1] is returned in r20. 642542SN/A xc->regs.intRegFile[20] = sim_fds[1]; 652541SN/A return sim_fds[0]; 662541SN/A} 672541SN/A 682541SN/A 692541SN/A/// Target uname() handler. 702541SN/Astatic SyscallReturn 712541SN/AunameFunc(SyscallDesc *desc, int callnum, Process *process, 722901Ssaidi@eecs.umich.edu ExecContext *xc) 732901Ssaidi@eecs.umich.edu{ 742901Ssaidi@eecs.umich.edu TypedBufferArg<Linux::utsname> name(xc->getSyscallArg(0)); 752901Ssaidi@eecs.umich.edu 762901Ssaidi@eecs.umich.edu strcpy(name->sysname, "Linux"); 772901Ssaidi@eecs.umich.edu strcpy(name->nodename, "m5.eecs.umich.edu"); 782901Ssaidi@eecs.umich.edu strcpy(name->release, "2.4.20"); 792901Ssaidi@eecs.umich.edu strcpy(name->version, "#1 Mon Aug 18 11:32:15 EDT 2003"); 802901Ssaidi@eecs.umich.edu strcpy(name->machine, "alpha"); 812901Ssaidi@eecs.umich.edu 822901Ssaidi@eecs.umich.edu name.copyOut(xc->mem); 832901Ssaidi@eecs.umich.edu return 0; 842901Ssaidi@eecs.umich.edu} 852539SN/A 862539SN/A/// Target osf_getsysyinfo() handler. Even though this call is 872539SN/A/// borrowed from Tru64, the subcases that get used appear to be 882539SN/A/// different in practice from those used by Tru64 processes. 892539SN/Astatic SyscallReturn 902539SN/Aosf_getsysinfoFunc(SyscallDesc *desc, int callnum, Process *process, 912539SN/A ExecContext *xc) 922539SN/A{ 932489SN/A unsigned op = xc->getSyscallArg(0); 942901Ssaidi@eecs.umich.edu // unsigned nbytes = xc->getSyscallArg(2); 953401Sktlim@umich.edu 964435Ssaidi@eecs.umich.edu switch (op) { 974435Ssaidi@eecs.umich.edu 982489SN/A case 45: { // GSI_IEEE_FP_CONTROL 992489SN/A TypedBufferArg<uint64_t> fpcr(xc->getSyscallArg(1)); 1002489SN/A // I don't think this exactly matches the HW FPCR 1013349Sbinkertn@umich.edu *fpcr = 0; 1022384SN/A fpcr.copyOut(xc->mem); 1034870Sstever@eecs.umich.edu return 0; 1042685Ssaidi@eecs.umich.edu } 1052685Ssaidi@eecs.umich.edu 1064435Ssaidi@eecs.umich.edu default: 1074435Ssaidi@eecs.umich.edu cerr << "osf_getsysinfo: unknown op " << op << endl; 1084435Ssaidi@eecs.umich.edu abort(); 1094435Ssaidi@eecs.umich.edu break; 1104435Ssaidi@eecs.umich.edu } 1114435Ssaidi@eecs.umich.edu 1124437Ssaidi@eecs.umich.edu return 1; 1134435Ssaidi@eecs.umich.edu} 1144435Ssaidi@eecs.umich.edu 1154435Ssaidi@eecs.umich.edu/// Target osf_setsysinfo() handler. 1162685Ssaidi@eecs.umich.edustatic SyscallReturn 1174435Ssaidi@eecs.umich.eduosf_setsysinfoFunc(SyscallDesc *desc, int callnum, Process *process, 1182685Ssaidi@eecs.umich.edu ExecContext *xc) 1192565SN/A{ 1204435Ssaidi@eecs.umich.edu unsigned op = xc->getSyscallArg(0); 1214435Ssaidi@eecs.umich.edu // unsigned nbytes = xc->getSyscallArg(2); 1224435Ssaidi@eecs.umich.edu 1234435Ssaidi@eecs.umich.edu switch (op) { 1242641Sstever@eecs.umich.edu 1252685Ssaidi@eecs.umich.edu case 14: { // SSI_IEEE_FP_CONTROL 1262685Ssaidi@eecs.umich.edu TypedBufferArg<uint64_t> fpcr(xc->getSyscallArg(1)); 1272685Ssaidi@eecs.umich.edu // I don't think this exactly matches the HW FPCR 1282657Ssaidi@eecs.umich.edu fpcr.copyIn(xc->mem); 1292685Ssaidi@eecs.umich.edu DPRINTFR(SyscallVerbose, "osf_setsysinfo(SSI_IEEE_FP_CONTROL): " 1302685Ssaidi@eecs.umich.edu " setting FPCR to 0x%x\n", gtoh(*(uint64_t*)fpcr)); 1314435Ssaidi@eecs.umich.edu return 0; 1322685Ssaidi@eecs.umich.edu } 1332685Ssaidi@eecs.umich.edu 1342685Ssaidi@eecs.umich.edu default: 1352685Ssaidi@eecs.umich.edu cerr << "osf_setsysinfo: unknown op " << op << endl; 1362630SN/A abort(); 1372630SN/A break; 1382901Ssaidi@eecs.umich.edu } 1392901Ssaidi@eecs.umich.edu 1402901Ssaidi@eecs.umich.edu return 1; 1412901Ssaidi@eecs.umich.edu} 1422901Ssaidi@eecs.umich.edu 1432569SN/A 1442685Ssaidi@eecs.umich.eduSyscallDesc SparcLinuxProcess::syscallDescs[] = { 1452565SN/A /* 0 */ SyscallDesc("restart_syscall", unimplimentedFunc); 1462569SN/A /* 1 */ SyscallDesc("exit", unimplimentedFunc); 1472657Ssaidi@eecs.umich.edu /* 2 */ SyscallDesc("fork", unimplimentedFunc); 1482384SN/A /* 3 */ SyscallDesc("read", unimplimentedFunc); 149679SN/A /* 4 */ SyscallDesc("write", unimplimentedFunc); 1502521SN/A /* 5 */ SyscallDesc("open", unimplimentedFunc); 1514435Ssaidi@eecs.umich.edu /* 6 */ SyscallDesc("close", unimplimentedFunc); 1524435Ssaidi@eecs.umich.edu /* 7 */ SyscallDesc("wait4", unimplimentedFunc); 1532565SN/A /* 8 */ SyscallDesc("creat", unimplimentedFunc); 1542384SN/A /* 9 */ SyscallDesc("link", unimplimentedFunc); 1552901Ssaidi@eecs.umich.edu /* 10 */ SyscallDesc("unlink", unimplimentedFunc); 1562901Ssaidi@eecs.umich.edu /* 11 */ SyscallDesc("execv", unimplimentedFunc); 1572901Ssaidi@eecs.umich.edu /* 12 */ SyscallDesc("chdir", unimplimentedFunc); 1582901Ssaidi@eecs.umich.edu /* 13 */ SyscallDesc("chown", unimplimentedFunc); 1592901Ssaidi@eecs.umich.edu /* 14 */ SyscallDesc("mknod", unimplimentedFunc); 1602901Ssaidi@eecs.umich.edu /* 15 */ SyscallDesc("chmod", unimplimentedFunc); 1612901Ssaidi@eecs.umich.edu /* 16 */ SyscallDesc("lchown", unimplimentedFunc); 1622901Ssaidi@eecs.umich.edu /* 17 */ SyscallDesc("brk", unimplimentedFunc); 1632901Ssaidi@eecs.umich.edu /* 18 */ SyscallDesc("perfctr", unimplimentedFunc); 1642901Ssaidi@eecs.umich.edu /* 19 */ SyscallDesc("lseek", unimplimentedFunc); 1652901Ssaidi@eecs.umich.edu /* 20 */ SyscallDesc("getpid", unimplimentedFunc); 1662901Ssaidi@eecs.umich.edu /* 21 */ SyscallDesc("capget", unimplimentedFunc); 1672901Ssaidi@eecs.umich.edu /* 22 */ SyscallDesc("capset", unimplimentedFunc); 1682901Ssaidi@eecs.umich.edu /* 23 */ SyscallDesc("setuid", unimplimentedFunc); 1692901Ssaidi@eecs.umich.edu /* 24 */ SyscallDesc("getuid", unimplimentedFunc); 1702901Ssaidi@eecs.umich.edu /* 25 */ SyscallDesc("time", unimplimentedFunc); 1712901Ssaidi@eecs.umich.edu /* 26 */ SyscallDesc("ptrace", unimplimentedFunc); 1722901Ssaidi@eecs.umich.edu /* 27 */ SyscallDesc("alarm", unimplimentedFunc); 1732901Ssaidi@eecs.umich.edu /* 28 */ SyscallDesc("sigaltstack", unimplimentedFunc); 1742901Ssaidi@eecs.umich.edu /* 29 */ SyscallDesc("pause", unimplimentedFunc); 1752901Ssaidi@eecs.umich.edu /* 30 */ SyscallDesc("utime", unimplimentedFunc); 1762901Ssaidi@eecs.umich.edu /* 31 */ SyscallDesc("lchown32", unimplimentedFunc); 1772901Ssaidi@eecs.umich.edu /* 32 */ SyscallDesc("fchown32", unimplimentedFunc); 1782384SN/A /* 33 */ SyscallDesc("access", unimplimentedFunc); 1792489SN/A /* 34 */ SyscallDesc("nice", unimplimentedFunc); 1802489SN/A /* 35 */ SyscallDesc("chown32", unimplimentedFunc); 1814435Ssaidi@eecs.umich.edu /* 36 */ SyscallDesc("sync", unimplimentedFunc); 1823349Sbinkertn@umich.edu /* 37 */ SyscallDesc("kill", unimplimentedFunc); 1832659Ssaidi@eecs.umich.edu /* 38 */ SyscallDesc("stat", unimplimentedFunc); 1844435Ssaidi@eecs.umich.edu /* 39 */ SyscallDesc("sendfile", unimplimentedFunc); 1852659Ssaidi@eecs.umich.edu /* 40 */ SyscallDesc("lstat", unimplimentedFunc); 1862659Ssaidi@eecs.umich.edu /* 41 */ SyscallDesc("dup", unimplimentedFunc); 1872659Ssaidi@eecs.umich.edu /* 42 */ SyscallDesc("pipe", unimplimentedFunc); 1882659Ssaidi@eecs.umich.edu /* 43 */ SyscallDesc("times", unimplimentedFunc); 1892659Ssaidi@eecs.umich.edu /* 44 */ SyscallDesc("getuid32", unimplimentedFunc); 1902659Ssaidi@eecs.umich.edu /* 45 */ SyscallDesc("umount2", unimplimentedFunc); 1914435Ssaidi@eecs.umich.edu /* 46 */ SyscallDesc("setgid", unimplimentedFunc); 1922659Ssaidi@eecs.umich.edu /* 47 */ SyscallDesc("getgid", unimplimentedFunc); 1934435Ssaidi@eecs.umich.edu /* 48 */ SyscallDesc("signal", unimplimentedFunc); 1942659Ssaidi@eecs.umich.edu /* 49 */ SyscallDesc("geteuid", unimplimentedFunc); 1952659Ssaidi@eecs.umich.edu /* 50 */ SyscallDesc("getegid", unimplimentedFunc); 1964435Ssaidi@eecs.umich.edu /* 51 */ SyscallDesc("acct", unimplimentedFunc); 1974435Ssaidi@eecs.umich.edu /* 52 */ SyscallDesc("memory_ordering", unimplimentedFunc); 1984435Ssaidi@eecs.umich.edu /* 53 */ SyscallDesc("getgid32", unimplimentedFunc); 1994435Ssaidi@eecs.umich.edu /* 54 */ SyscallDesc("ioctl", unimplimentedFunc); 2004435Ssaidi@eecs.umich.edu /* 55 */ SyscallDesc("reboot", unimplimentedFunc); 2014435Ssaidi@eecs.umich.edu /* 56 */ SyscallDesc("mmap2", unimplimentedFunc); 2022657Ssaidi@eecs.umich.edu /* 57 */ SyscallDesc("symlink", unimplimentedFunc); 2034435Ssaidi@eecs.umich.edu /* 58 */ SyscallDesc("readlink", unimplimentedFunc); 2044435Ssaidi@eecs.umich.edu /* 59 */ SyscallDesc("execve", unimplimentedFunc); 2054435Ssaidi@eecs.umich.edu /* 60 */ SyscallDesc("umask", unimplimentedFunc); 2062489SN/A /* 61 */ SyscallDesc("chroot", unimplimentedFunc); 2072641Sstever@eecs.umich.edu /* 62 */ SyscallDesc("fstat", unimplimentedFunc); 2082641Sstever@eecs.umich.edu /* 63 */ SyscallDesc("fstat64", unimplimentedFunc); 2092489SN/A /* 64 */ SyscallDesc("getpagesize", unimplimentedFunc); 2102641Sstever@eecs.umich.edu /* 65 */ SyscallDesc("msync", unimplimentedFunc); 2112641Sstever@eecs.umich.edu /* 66 */ SyscallDesc("vfork", unimplimentedFunc); 2122384SN/A /* 67 */ SyscallDesc("pread64", unimplimentedFunc); 2132384SN/A /* 68 */ SyscallDesc("pwrite64", unimplimentedFunc); 2142384SN/A /* 69 */ SyscallDesc("geteuid32", unimplimentedFunc); 2152901Ssaidi@eecs.umich.edu /* 70 */ SyscallDesc("getdgid32", unimplimentedFunc); 2162901Ssaidi@eecs.umich.edu /* 71 */ SyscallDesc("mmap", unimplimentedFunc); 2172685Ssaidi@eecs.umich.edu /* 72 */ SyscallDesc("setreuid32", unimplimentedFunc); 2182384SN/A /* 73 */ SyscallDesc("munmap", unimplimentedFunc); 2194451Ssaidi@eecs.umich.edu /* 74 */ SyscallDesc("mprotect", unimplimentedFunc); 2204451Ssaidi@eecs.umich.edu /* 75 */ SyscallDesc("madvise", unimplimentedFunc); 2214451Ssaidi@eecs.umich.edu /* 76 */ SyscallDesc("vhangup", unimplimentedFunc); 2222406SN/A /* 77 */ SyscallDesc("truncate64", unimplimentedFunc); 2232406SN/A /* 78 */ SyscallDesc("mincore", unimplimentedFunc); 2242663Sstever@eecs.umich.edu /* 79 */ SyscallDesc("getgroups", unimplimentedFunc); 2253349Sbinkertn@umich.edu /* 80 */ SyscallDesc("setgroups", unimplimentedFunc); 2262641Sstever@eecs.umich.edu /* 81 */ SyscallDesc("getpgrp", unimplimentedFunc); 2272384SN/A /* 82 */ SyscallDesc("setgroups32", unimplimentedFunc); 2282566SN/A /* 83 */ SyscallDesc("setitimer", unimplimentedFunc); 2292685Ssaidi@eecs.umich.edu /* 84 */ SyscallDesc("ftruncate64", unimplimentedFunc); 2302641Sstever@eecs.umich.edu /* 85 */ SyscallDesc("swapon", unimplimentedFunc); 2312685Ssaidi@eecs.umich.edu /* 86 */ SyscallDesc("getitimer", unimplimentedFunc); 2322641Sstever@eecs.umich.edu /* 87 */ SyscallDesc("setuid32", unimplimentedFunc); 2332565SN/A /* 88 */ SyscallDesc("sethostname", unimplimentedFunc); 2342565SN/A /* 89 */ SyscallDesc("setgid32", unimplimentedFunc); 2354451Ssaidi@eecs.umich.edu /* 90 */ SyscallDesc("dup2", unimplimentedFunc); 2364451Ssaidi@eecs.umich.edu /* 91 */ SyscallDesc("setfsuid32", unimplimentedFunc); 2374435Ssaidi@eecs.umich.edu /* 92 */ SyscallDesc("fcntl", unimplimentedFunc); 2382384SN/A /* 93 */ SyscallDesc("select", unimplimentedFunc); 2392901Ssaidi@eecs.umich.edu /* 94 */ SyscallDesc("setfsgid32", unimplimentedFunc); 2402384SN/A /* 95 */ SyscallDesc("fsync", unimplimentedFunc); 2412384SN/A /* 96 */ SyscallDesc("setpriority", unimplimentedFunc); 2424435Ssaidi@eecs.umich.edu /* 97 */ SyscallDesc("socket", unimplimentedFunc); 2434435Ssaidi@eecs.umich.edu /* 98 */ SyscallDesc("connect", unimplimentedFunc); 2444435Ssaidi@eecs.umich.edu /* 99 */ SyscallDesc("accept", unimplimentedFunc); 2454435Ssaidi@eecs.umich.edu /* 100 */ SyscallDesc("getpriority", unimplimentedFunc); 2464435Ssaidi@eecs.umich.edu /* 101 */ SyscallDesc("rt_sigreturn", unimplimentedFunc); 2474435Ssaidi@eecs.umich.edu /* 102 */ SyscallDesc("rt_sigaction", unimplimentedFunc); 2484435Ssaidi@eecs.umich.edu /* 103 */ SyscallDesc("rt_sigprocmask", unimplimentedFunc); 2494435Ssaidi@eecs.umich.edu /* 104 */ SyscallDesc("rt_sigpending", unimplimentedFunc); 2504435Ssaidi@eecs.umich.edu /* 105 */ SyscallDesc("rt_sigtimedwait", unimplimentedFunc); 2514435Ssaidi@eecs.umich.edu /* 106 */ SyscallDesc("rt_sigqueueinfo", unimplimentedFunc); 2524435Ssaidi@eecs.umich.edu /* 107 */ SyscallDesc("rt_sigsuspend", unimplimentedFunc); 2532384SN/A /* 108 */ SyscallDesc("setresuid", unimplimentedFunc); 2542384SN/A /* 109 */ SyscallDesc("getresuid", unimplimentedFunc); 2554435Ssaidi@eecs.umich.edu /* 110 */ SyscallDesc("setresgid", unimplimentedFunc); 2562384SN/A /* 111 */ SyscallDesc("getresgid", unimplimentedFunc); 2572901Ssaidi@eecs.umich.edu /* 112 */ SyscallDesc("setregid32", unimplimentedFunc); 2582901Ssaidi@eecs.umich.edu /* 113 */ SyscallDesc("recvmsg", unimplimentedFunc); 2592901Ssaidi@eecs.umich.edu /* 114 */ SyscallDesc("sendmsg", unimplimentedFunc); 2604435Ssaidi@eecs.umich.edu /* 115 */ SyscallDesc("getgroups32", unimplimentedFunc); 2614435Ssaidi@eecs.umich.edu /* 116 */ SyscallDesc("gettimeofday", unimplimentedFunc); 2622902Ssaidi@eecs.umich.edu /* 117 */ SyscallDesc("getrusage", unimplimentedFunc); 2632901Ssaidi@eecs.umich.edu /* 118 */ SyscallDesc("getsockopt", unimplimentedFunc); 2642901Ssaidi@eecs.umich.edu /* 119 */ SyscallDesc("getcwd", unimplimentedFunc); 2654435Ssaidi@eecs.umich.edu /* 120 */ SyscallDesc("readv", unimplimentedFunc); 2664435Ssaidi@eecs.umich.edu /* 121 */ SyscallDesc("writev", unimplimentedFunc); 2674435Ssaidi@eecs.umich.edu /* 122 */ SyscallDesc("settimeofday", unimplimentedFunc); 2684435Ssaidi@eecs.umich.edu /* 123 */ SyscallDesc("fchown", unimplimentedFunc); 2694435Ssaidi@eecs.umich.edu /* 124 */ SyscallDesc("fchmod", unimplimentedFunc); 2702901Ssaidi@eecs.umich.edu /* 125 */ SyscallDesc("recvfrom", unimplimentedFunc); 2712901Ssaidi@eecs.umich.edu /* 126 */ SyscallDesc("setreuid", unimplimentedFunc); 2724435Ssaidi@eecs.umich.edu /* 127 */ SyscallDesc("setregid", unimplimentedFunc); 2734435Ssaidi@eecs.umich.edu /* 128 */ SyscallDesc("rename", unimplimentedFunc); 2744435Ssaidi@eecs.umich.edu /* 129 */ SyscallDesc("truncate", unimplimentedFunc); 2754435Ssaidi@eecs.umich.edu /* 130 */ SyscallDesc("ftruncate", unimplimentedFunc); 2764435Ssaidi@eecs.umich.edu /* 131 */ SyscallDesc("flock", unimplimentedFunc); 2774435Ssaidi@eecs.umich.edu /* 132 */ SyscallDesc("lstat64", unimplimentedFunc); 2784435Ssaidi@eecs.umich.edu /* 133 */ SyscallDesc("sendto", unimplimentedFunc); 2794435Ssaidi@eecs.umich.edu /* 134 */ SyscallDesc("shutdown", unimplimentedFunc); 2804435Ssaidi@eecs.umich.edu /* 135 */ SyscallDesc("socketpair", unimplimentedFunc); 2814435Ssaidi@eecs.umich.edu /* 136 */ SyscallDesc("mkdir", unimplimentedFunc); 2824435Ssaidi@eecs.umich.edu /* 137 */ SyscallDesc("rmdir", unimplimentedFunc); 2834435Ssaidi@eecs.umich.edu /* 138 */ SyscallDesc("utimes", unimplimentedFunc); 2844435Ssaidi@eecs.umich.edu /* 139 */ SyscallDesc("stat64", unimplimentedFunc); 2854435Ssaidi@eecs.umich.edu /* 140 */ SyscallDesc("sendfile64", unimplimentedFunc); 2864435Ssaidi@eecs.umich.edu /* 141 */ SyscallDesc("getpeername", unimplimentedFunc); 2874451Ssaidi@eecs.umich.edu /* 142 */ SyscallDesc("futex", unimplimentedFunc); 2884451Ssaidi@eecs.umich.edu /* 143 */ SyscallDesc("gettid", unimplimentedFunc); 2894435Ssaidi@eecs.umich.edu /* 144 */ SyscallDesc("getrlimit", unimplimentedFunc); 2902901Ssaidi@eecs.umich.edu /* 145 */ SyscallDesc("setrlimit", unimplimentedFunc); 2912901Ssaidi@eecs.umich.edu /* 146 */ SyscallDesc("pivot_root", unimplimentedFunc); 2924435Ssaidi@eecs.umich.edu /* 147 */ SyscallDesc("prctl", unimplimentedFunc); 2934435Ssaidi@eecs.umich.edu /* 148 */ SyscallDesc("pciconfig_read", unimplimentedFunc); 2942902Ssaidi@eecs.umich.edu /* 149 */ SyscallDesc("pciconfig_write", unimplimentedFunc); 2954451Ssaidi@eecs.umich.edu /* 150 */ SyscallDesc("getsockname", unimplimentedFunc); 2964451Ssaidi@eecs.umich.edu /* 151 */ SyscallDesc("inotify_init", unimplimentedFunc); 2972902Ssaidi@eecs.umich.edu /* 152 */ SyscallDesc("inotify_add_watch", unimplimentedFunc); 2982901Ssaidi@eecs.umich.edu /* 153 */ SyscallDesc("poll", unimplimentedFunc); 2992901Ssaidi@eecs.umich.edu /* 154 */ SyscallDesc("getdents64", unimplimentedFunc); 3002901Ssaidi@eecs.umich.edu /* 155 */ SyscallDesc("fcntl64", unimplimentedFunc); 3014451Ssaidi@eecs.umich.edu /* 156 */ SyscallDesc("inotify_rm_watch", unimplimentedFunc); 3022384SN/A /* 157 */ SyscallDesc("statfs", unimplimentedFunc); 3034451Ssaidi@eecs.umich.edu /* 158 */ SyscallDesc("fstatfs", unimplimentedFunc); 3044451Ssaidi@eecs.umich.edu /* 159 */ SyscallDesc("umount", unimplimentedFunc); 3054451Ssaidi@eecs.umich.edu /* 160 */ SyscallDesc("sched_set_affinity", unimplimentedFunc); 3064451Ssaidi@eecs.umich.edu /* 161 */ SyscallDesc("sched_get_affinity", unimplimentedFunc); 3072901Ssaidi@eecs.umich.edu /* 162 */ SyscallDesc("getdomainname", unimplimentedFunc); 3084451Ssaidi@eecs.umich.edu /* 163 */ SyscallDesc("setdomainname", unimplimentedFunc); 3092902Ssaidi@eecs.umich.edu /* 164 */ SyscallDesc("utrap_install", unimplimentedFunc); 3102901Ssaidi@eecs.umich.edu /* 165 */ SyscallDesc("quotactl", unimplimentedFunc); 3112901Ssaidi@eecs.umich.edu /* 166 */ SyscallDesc("set_tid_address", unimplimentedFunc); 3122901Ssaidi@eecs.umich.edu /* 167 */ SyscallDesc("mount", unimplimentedFunc); 3132901Ssaidi@eecs.umich.edu /* 168 */ SyscallDesc("ustat", unimplimentedFunc); 3142901Ssaidi@eecs.umich.edu /* 169 */ SyscallDesc("setxattr", unimplimentedFunc); 3152901Ssaidi@eecs.umich.edu /* 170 */ SyscallDesc("lsetxattr", unimplimentedFunc); 3162566SN/A /* 171 */ SyscallDesc("fsetxattr", unimplimentedFunc); 3172901Ssaidi@eecs.umich.edu /* 172 */ SyscallDesc("getxattr", unimplimentedFunc); 3182901Ssaidi@eecs.umich.edu /* 173 */ SyscallDesc("lgetxattr", unimplimentedFunc); 3192901Ssaidi@eecs.umich.edu /* 174 */ SyscallDesc("getdents", unimplimentedFunc); 3202901Ssaidi@eecs.umich.edu /* 175 */ SyscallDesc("setsid", unimplimentedFunc); 3212901Ssaidi@eecs.umich.edu /* 176 */ SyscallDesc("fchdir", unimplimentedFunc); 3222384SN/A /* 177 */ SyscallDesc("fgetxattr", unimplimentedFunc); 3232384SN/A /* 178 */ SyscallDesc("listxattr", unimplimentedFunc); 3242384SN/A /* 179 */ SyscallDesc("llistxattr", unimplimentedFunc); 325545SN/A /* 180 */ SyscallDesc("flistxattr", unimplimentedFunc); 326545SN/A /* 181 */ SyscallDesc("removexattr", unimplimentedFunc); 327545SN/A /* 182 */ SyscallDesc("lremovexattr", unimplimentedFunc); 3282489SN/A /* 183 */ SyscallDesc("sigpending", unimplimentedFunc); 3292489SN/A /* 184 */ SyscallDesc("query_module", unimplimentedFunc); 330545SN/A /* 185 */ SyscallDesc("setpgid", unimplimentedFunc); 331545SN/A /* 186 */ SyscallDesc("fremovexattr", unimplimentedFunc); 332679SN/A /* 187 */ SyscallDesc("tkill", unimplimentedFunc); 333 /* 188 */ SyscallDesc("exit_group", unimplimentedFunc); 334 /* 189 */ SyscallDesc("uname", unimplimentedFunc); 335 /* 190 */ SyscallDesc("init_module", unimplimentedFunc); 336 /* 191 */ SyscallDesc("personality", unimplimentedFunc); 337 /* 192 */ SyscallDesc("remap_file_pages", unimplimentedFunc); 338 /* 193 */ SyscallDesc("epoll_create", unimplimentedFunc); 339 /* 194 */ SyscallDesc("epoll_ctl", unimplimentedFunc); 340 /* 195 */ SyscallDesc("epoll_wait", unimplimentedFunc); 341 /* 196 */ SyscallDesc("ioprio_set", unimplimentedFunc); 342 /* 197 */ SyscallDesc("getppid", unimplimentedFunc); 343 /* 198 */ SyscallDesc("sigaction", unimplimentedFunc); 344 /* 199 */ SyscallDesc("sgetmask", unimplimentedFunc); 345 /* 200 */ SyscallDesc("ssetmask", unimplimentedFunc); 346 /* 201 */ SyscallDesc("sigsuspend", unimplimentedFunc); 347 /* 202 */ SyscallDesc("oldlstat", unimplimentedFunc); 348 /* 203 */ SyscallDesc("uselib", unimplimentedFunc); 349 /* 204 */ SyscallDesc("readdir", unimplimentedFunc); 350 /* 205 */ SyscallDesc("readahead", unimplimentedFunc); 351 /* 206 */ SyscallDesc("socketcall", unimplimentedFunc); 352 /* 207 */ SyscallDesc("syslog", unimplimentedFunc); 353 /* 208 */ SyscallDesc("lookup_dcookie", unimplimentedFunc); 354 /* 209 */ SyscallDesc("fadvise64", unimplimentedFunc); 355 /* 210 */ SyscallDesc("fadvise64_64", unimplimentedFunc); 356 /* 211 */ SyscallDesc("tgkill", unimplimentedFunc); 357 /* 212 */ SyscallDesc("waitpid", unimplimentedFunc); 358 /* 213 */ SyscallDesc("swapoff", unimplimentedFunc); 359 /* 214 */ SyscallDesc("sysinfo", unimplimentedFunc); 360 /* 215 */ SyscallDesc("ipc", unimplimentedFunc); 361 /* 216 */ SyscallDesc("sigreturn", unimplimentedFunc); 362 /* 217 */ SyscallDesc("clone", unimplimentedFunc); 363 /* 218 */ SyscallDesc("ioprio_get", unimplimentedFunc); 364 /* 219 */ SyscallDesc("adjtimex", unimplimentedFunc); 365 /* 220 */ SyscallDesc("sigprocmask", unimplimentedFunc); 366 /* 221 */ SyscallDesc("create_module", unimplimentedFunc); 367 /* 222 */ SyscallDesc("delete_module", unimplimentedFunc); 368 /* 223 */ SyscallDesc("get_kernel_syms", unimplimentedFunc); 369 /* 224 */ SyscallDesc("getpgid", unimplimentedFunc); 370 /* 225 */ SyscallDesc("bdflush", unimplimentedFunc); 371 /* 226 */ SyscallDesc("sysfs", unimplimentedFunc); 372 /* 227 */ SyscallDesc("afs_syscall", unimplimentedFunc); 373 /* 228 */ SyscallDesc("setfsuid", unimplimentedFunc); 374 /* 229 */ SyscallDesc("setfsgid", unimplimentedFunc); 375 /* 230 */ SyscallDesc("_newselect", unimplimentedFunc); 376 /* 231 */ SyscallDesc("time", unimplimentedFunc); 377 /* 232 */ SyscallDesc("oldstat", unimplimentedFunc); 378 /* 233 */ SyscallDesc("stime", unimplimentedFunc); 379 /* 234 */ SyscallDesc("statfs64", unimplimentedFunc); 380 /* 235 */ SyscallDesc("fstatfs64", unimplimentedFunc); 381 /* 236 */ SyscallDesc("_llseek", unimplimentedFunc); 382 /* 237 */ SyscallDesc("mlock", unimplimentedFunc); 383 /* 238 */ SyscallDesc("munlock", unimplimentedFunc); 384 /* 239 */ SyscallDesc("mlockall", unimplimentedFunc); 385 /* 240 */ SyscallDesc("munlockall", unimplimentedFunc); 386 /* 241 */ SyscallDesc("sched_setparam", unimplimentedFunc); 387 /* 242 */ SyscallDesc("sched_getparam", unimplimentedFunc); 388 /* 243 */ SyscallDesc("sched_setscheduler", unimplimentedFunc); 389 /* 244 */ SyscallDesc("sched_getscheduler", unimplimentedFunc); 390 /* 245 */ SyscallDesc("sched_yield", unimplimentedFunc); 391 /* 246 */ SyscallDesc("sched_get_priority_max", unimplimented); 392 /* 247 */ SyscallDesc("sched_get_priority_min", unimplimented); 393 /* 248 */ SyscallDesc("sched_rr_get_interval", unimplimented); 394 /* 249 */ SyscallDesc("nanosleep", unimplimentedFunc); 395 /* 250 */ SyscallDesc("mremap", unimplimentedFunc); 396 /* 251 */ SyscallDesc("_sysctl", unimplimentedFunc); 397 /* 252 */ SyscallDesc("getsid", unimplimentedFunc); 398 /* 253 */ SyscallDesc("fdatasync", unimplimentedFunc); 399 /* 254 */ SyscallDesc("nfsservctl", unimplimentedFunc); 400 /* 255 */ SyscallDesc("aplib", unimplimentedFunc); 401 /* 256 */ SyscallDesc("clock_settime", unimplimentedFunc); 402 /* 257 */ SyscallDesc("clock_gettime", unimplimentedFunc); 403 /* 258 */ SyscallDesc("clock_getres", unimplimentedFunc); 404 /* 259 */ SyscallDesc("clock_nanosleep", unimplimentedFunc); 405 /* 260 */ SyscallDesc("sched_getaffinity", unimplimentedFunc); 406 /* 261 */ SyscallDesc("sched_setaffinity", unimplimentedFunc); 407 /* 262 */ SyscallDesc("timer_settime", unimplimentedFunc); 408 /* 263 */ SyscallDesc("timer_gettime", unimplimentedFunc); 409 /* 264 */ SyscallDesc("timer_getoverrun", unimplimentedFunc); 410 /* 265 */ SyscallDesc("timer_delete", unimplimentedFunc); 411 /* 266 */ SyscallDesc("timer_create", unimplimentedFunc); 412 /* 267 */ SyscallDesc("vserver", unimplimentedFunc); 413 /* 268 */ SyscallDesc("io_setup", unimplimentedFunc); 414 /* 269 */ SyscallDesc("io_destroy", unimplimentedFunc); 415 /* 270 */ SyscallDesc("io_submit", unimplimentedFunc); 416 /* 271 */ SyscallDesc("io_cancel", unimplimentedFunc); 417 /* 272 */ SyscallDesc("io_getevents", unimplimentedFunc); 418 /* 273 */ SyscallDesc("mq_open", unimplimentedFunc); 419 /* 274 */ SyscallDesc("mq_unlink", unimplimentedFunc); 420 /* 275 */ SyscallDesc("mq_timedsend", unimplimentedFunc); 421 /* 276 */ SyscallDesc("mq_timedreceive", unimplimentedFunc); 422 /* 277 */ SyscallDesc("mq_notify", unimplimentedFunc); 423 /* 278 */ SyscallDesc("mq_getsetattr", unimplimentedFunc); 424 /* 279 */ SyscallDesc("waitid", unimplimentedFunc); 425 /* 280 */ SyscallDesc("sys_setaltroot", unimplimentedFunc); 426 /* 281 */ SyscallDesc("add_key", unimplimentedFunc); 427 /* 282 */ SyscallDesc("request_key", unimplimentedFunc); 428 /* 283 */ SyscallDesc("keyctl", unimplimentedFunc); 429}; 430 431SparcLinuxProcess::SparcLinuxProcess(const std::string &name, 432 ObjectFile *objFile, 433 int stdin_fd, 434 int stdout_fd, 435 int stderr_fd, 436 std::vector<std::string> &argv, 437 std::vector<std::string> &envp) 438 : LiveProcess(name, objFile, stdin_fd, stdout_fd, stderr_fd, argv, envp), 439 Num_Syscall_Descs(sizeof(syscallDescs) / sizeof(SyscallDesc)) 440{ 441 init_regs->intRegFile[0] = 0; 442} 443 444 445 446SyscallDesc* 447AlphaLinuxProcess::getDesc(int callnum) 448{ 449 if (callnum < 0 || callnum > Num_Syscall_Descs) 450 return NULL; 451 return &syscallDescs[callnum]; 452} 453