1/*
2 * Copyright (c) 2010-2013, 2015 ARM Limited
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
9 * licensed hereunder.  You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
14 * Copyright (c) 2003-2005 The Regents of The University of Michigan
15 * Copyright (c) 2007-2008 The Florida State University
16 * All rights reserved.
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions are
20 * met: redistributions of source code must retain the above copyright
21 * notice, this list of conditions and the following disclaimer;
22 * redistributions in binary form must reproduce the above copyright
23 * notice, this list of conditions and the following disclaimer in the
24 * documentation and/or other materials provided with the distribution;
25 * neither the name of the copyright holders nor the names of its
26 * contributors may be used to endorse or promote products derived from
27 * this software without specific prior written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
30 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
31 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
32 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
33 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
34 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
35 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
36 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
37 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
39 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40 *
41 * Authors: Korey Sewell
42 *          Stephen Hines
43 *          Ali Saidi
44 *          Giacomo Gabrielli
45 */
46
47#include "arch/arm/linux/process.hh"
48
49#include <sys/syscall.h>
50
51#include "arch/arm/isa_traits.hh"
52#include "arch/arm/linux/linux.hh"
53#include "base/loader/object_file.hh"
54#include "base/trace.hh"
55#include "cpu/thread_context.hh"
56#include "kern/linux/linux.hh"
57#include "sim/process.hh"
58#include "sim/syscall_desc.hh"
59#include "sim/syscall_emul.hh"
60#include "sim/system.hh"
61
62using namespace std;
63using namespace ArmISA;
64
65namespace
66{
67
68class ArmLinuxObjectFileLoader : public ObjectFile::Loader
69{
70  public:
71    Process *
72    load(ProcessParams *params, ObjectFile *obj_file) override
73    {
74        auto arch = obj_file->getArch();
75        auto opsys = obj_file->getOpSys();
76
77        if (arch != ObjectFile::Arm && arch != ObjectFile::Thumb &&
78                arch != ObjectFile::Arm64) {
79            return nullptr;
80        }
81
82        if (opsys == ObjectFile::UnknownOpSys) {
83            warn("Unknown operating system; assuming Linux.");
84            opsys = ObjectFile::Linux;
85        }
86
87        if (opsys == ObjectFile::LinuxArmOABI) {
88            fatal("gem5 does not support ARM OABI binaries. Please recompile "
89                    "with an EABI compiler.");
90        }
91
92        if (opsys != ObjectFile::Linux)
93            return nullptr;
94
95        if (arch == ObjectFile::Arm64)
96            return new ArmLinuxProcess64(params, obj_file, arch);
97        else
98            return new ArmLinuxProcess32(params, obj_file, arch);
99    }
100};
101
102ArmLinuxObjectFileLoader loader;
103
104} // anonymous namespace
105
106/// Target uname() handler.
107static SyscallReturn
108unameFunc32(SyscallDesc *desc, int callnum, ThreadContext *tc)
109{
110    int index = 0;
111    auto process = tc->getProcessPtr();
112    TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, index));
113
114    strcpy(name->sysname, "Linux");
115    strcpy(name->nodename, "m5.eecs.umich.edu");
116    strcpy(name->release, process->release.c_str());
117    strcpy(name->version, "#1 SMP Sat Dec  1 00:00:00 GMT 2012");
118    strcpy(name->machine, "armv7l");
119
120    name.copyOut(tc->getVirtProxy());
121    return 0;
122}
123
124/// Target uname() handler.
125static SyscallReturn
126unameFunc64(SyscallDesc *desc, int callnum, ThreadContext *tc)
127{
128    int index = 0;
129    auto process = tc->getProcessPtr();
130    TypedBufferArg<Linux::utsname> name(process->getSyscallArg(tc, index));
131
132    strcpy(name->sysname, "Linux");
133    strcpy(name->nodename, "gem5");
134    strcpy(name->release, process->release.c_str());
135    strcpy(name->version, "#1 SMP Sat Dec  1 00:00:00 GMT 2012");
136    strcpy(name->machine, "armv8l");
137
138    name.copyOut(tc->getVirtProxy());
139    return 0;
140}
141
142/// Target set_tls() handler.
143static SyscallReturn
144setTLSFunc32(SyscallDesc *desc, int callnum, ThreadContext *tc)
145{
146    int index = 0;
147    auto process = tc->getProcessPtr();
148    uint32_t tlsPtr = process->getSyscallArg(tc, index);
149
150    tc->getVirtProxy().writeBlob(ArmLinuxProcess32::commPage + 0x0ff0,
151                                &tlsPtr, sizeof(tlsPtr));
152    tc->setMiscReg(MISCREG_TPIDRURO,tlsPtr);
153    return 0;
154}
155
156static SyscallReturn
157setTLSFunc64(SyscallDesc *desc, int callnum, ThreadContext *tc)
158{
159    int index = 0;
160    auto process = tc->getProcessPtr();
161    uint32_t tlsPtr = process->getSyscallArg(tc, index);
162
163    tc->setMiscReg(MISCREG_TPIDRRO_EL0, tlsPtr);
164    return 0;
165}
166
167static SyscallDesc syscallDescs32[] = {
168    /*  0 */ SyscallDesc("syscall", unimplementedFunc),
169    /*  1 */ SyscallDesc("exit", exitFunc),
170    /*  2 */ SyscallDesc("fork", unimplementedFunc),
171    /*  3 */ SyscallDesc("read", readFunc<ArmLinux32>),
172    /*  4 */ SyscallDesc("write", writeFunc<ArmLinux32>),
173    /*  5 */ SyscallDesc("open", openFunc<ArmLinux32>),
174    /*  6 */ SyscallDesc("close", closeFunc),
175    /*  7 */ SyscallDesc("unused#7", unimplementedFunc),
176    /*  8 */ SyscallDesc("creat", unimplementedFunc),
177    /*  9 */ SyscallDesc("link", unimplementedFunc),
178    /* 10 */ SyscallDesc("unlink", unlinkFunc),
179    /* 11 */ SyscallDesc("execve", execveFunc<ArmLinux32>),
180    /* 12 */ SyscallDesc("chdir", unimplementedFunc),
181    /* 13 */ SyscallDesc("time", timeFunc<ArmLinux32>),
182    /* 14 */ SyscallDesc("mknod", unimplementedFunc),
183    /* 15 */ SyscallDesc("chmod", chmodFunc<ArmLinux32>),
184    /* 16 */ SyscallDesc("lchown", chownFunc),
185    /* 17 */ SyscallDesc("unused#17", unimplementedFunc),
186    /* 18 */ SyscallDesc("unused#18", unimplementedFunc),
187    /* 19 */ SyscallDesc("lseek", lseekFunc),
188    /* 20 */ SyscallDesc("getpid", getpidFunc),
189    /* 21 */ SyscallDesc("mount", unimplementedFunc),
190    /* 22 */ SyscallDesc("umount", unimplementedFunc),
191    /* 23 */ SyscallDesc("setuid", setuidFunc),
192    /* 24 */ SyscallDesc("getuid", getuidFunc),
193    /* 25 */ SyscallDesc("stime", unimplementedFunc),
194    /* 26 */ SyscallDesc("ptrace", unimplementedFunc),
195    /* 27 */ SyscallDesc("alarm", unimplementedFunc),
196    /* 28 */ SyscallDesc("unused#28", unimplementedFunc),
197    /* 29 */ SyscallDesc("pause", unimplementedFunc),
198    /* 30 */ SyscallDesc("utime", unimplementedFunc),
199    /* 31 */ SyscallDesc("unused#31", unimplementedFunc),
200    /* 32 */ SyscallDesc("unused#32", unimplementedFunc),
201    /* 33 */ SyscallDesc("access", accessFunc),
202    /* 34 */ SyscallDesc("nice", unimplementedFunc),
203    /* 35 */ SyscallDesc("unused#35", unimplementedFunc),
204    /* 36 */ SyscallDesc("sync", unimplementedFunc),
205    /* 37 */ SyscallDesc("kill", ignoreFunc),
206    /* 38 */ SyscallDesc("rename", renameFunc),
207    /* 39 */ SyscallDesc("mkdir", mkdirFunc),
208    /* 40 */ SyscallDesc("rmdir", unimplementedFunc),
209    /* 41 */ SyscallDesc("dup", dupFunc),
210    /* 42 */ SyscallDesc("pipe", pipePseudoFunc),
211    /* 43 */ SyscallDesc("times", timesFunc<ArmLinux32>),
212    /* 44 */ SyscallDesc("unused#44", unimplementedFunc),
213    /* 45 */ SyscallDesc("brk", brkFunc),
214    /* 46 */ SyscallDesc("setgid", unimplementedFunc),
215    /* 47 */ SyscallDesc("getgid", getgidFunc),
216    /* 48 */ SyscallDesc("unused#48", unimplementedFunc),
217    /* 49 */ SyscallDesc("geteuid", geteuidFunc),
218    /* 50 */ SyscallDesc("getegid", getegidFunc),
219    /* 51 */ SyscallDesc("acct", unimplementedFunc),
220    /* 52 */ SyscallDesc("umount2", unimplementedFunc),
221    /* 53 */ SyscallDesc("unused#53", unimplementedFunc),
222    /* 54 */ SyscallDesc("ioctl", ioctlFunc<ArmLinux32>),
223    /* 55 */ SyscallDesc("fcntl", fcntlFunc),
224    /* 56 */ SyscallDesc("unused#56", unimplementedFunc),
225    /* 57 */ SyscallDesc("setpgid", unimplementedFunc),
226    /* 58 */ SyscallDesc("unused#58", unimplementedFunc),
227    /* 59 */ SyscallDesc("unused#59", unimplementedFunc),
228    /* 60 */ SyscallDesc("umask", umaskFunc),
229    /* 61 */ SyscallDesc("chroot", unimplementedFunc),
230    /* 62 */ SyscallDesc("ustat", unimplementedFunc),
231    /* 63 */ SyscallDesc("dup2", unimplementedFunc),
232    /* 64 */ SyscallDesc("getppid", getppidFunc),
233    /* 65 */ SyscallDesc("getpgrp", unimplementedFunc),
234    /* 66 */ SyscallDesc("setsid", unimplementedFunc),
235    /* 67 */ SyscallDesc("sigaction",unimplementedFunc),
236    /* 68 */ SyscallDesc("unused#68", unimplementedFunc),
237    /* 69 */ SyscallDesc("unused#69", unimplementedFunc),
238    /* 70 */ SyscallDesc("setreuid", unimplementedFunc),
239    /* 71 */ SyscallDesc("setregid", unimplementedFunc),
240    /* 72 */ SyscallDesc("sigsuspend", unimplementedFunc),
241    /* 73 */ SyscallDesc("sigpending", unimplementedFunc),
242    /* 74 */ SyscallDesc("sethostname", ignoreFunc),
243    /* 75 */ SyscallDesc("setrlimit", ignoreFunc),
244    /* 76 */ SyscallDesc("getrlimit", getrlimitFunc<ArmLinux32>),
245    /* 77 */ SyscallDesc("getrusage", getrusageFunc<ArmLinux32>),
246    /* 78 */ SyscallDesc("gettimeofday", gettimeofdayFunc<ArmLinux32>),
247    /* 79 */ SyscallDesc("settimeofday", unimplementedFunc),
248    /* 80 */ SyscallDesc("getgroups", unimplementedFunc),
249    /* 81 */ SyscallDesc("setgroups", unimplementedFunc),
250    /* 82 */ SyscallDesc("reserved#82", unimplementedFunc),
251    /* 83 */ SyscallDesc("symlink", unimplementedFunc),
252    /* 84 */ SyscallDesc("unused#84", unimplementedFunc),
253    /* 85 */ SyscallDesc("readlink", readlinkFunc),
254    /* 86 */ SyscallDesc("uselib", unimplementedFunc),
255    /* 87 */ SyscallDesc("swapon", unimplementedFunc),
256    /* 88 */ SyscallDesc("reboot", unimplementedFunc),
257    /* 89 */ SyscallDesc("readdir", unimplementedFunc),
258    /* 90 */ SyscallDesc("mmap", mmapFunc<ArmLinux32>),
259    /* 91 */ SyscallDesc("munmap", munmapFunc),
260    /* 92 */ SyscallDesc("truncate", truncateFunc),
261    /* 93 */ SyscallDesc("ftruncate", ftruncateFunc),
262    /* 94 */ SyscallDesc("fchmod", unimplementedFunc),
263    /* 95 */ SyscallDesc("fchown", unimplementedFunc),
264    /* 96 */ SyscallDesc("getpriority", unimplementedFunc),
265    /* 97 */ SyscallDesc("setpriority", unimplementedFunc),
266    /* 98 */ SyscallDesc("unused#98", unimplementedFunc),
267    /* 99 */ SyscallDesc("statfs", unimplementedFunc),
268    /* 100 */ SyscallDesc("fstatfs", unimplementedFunc),
269    /* 101 */ SyscallDesc("unused#101", unimplementedFunc),
270    /* 102 */ SyscallDesc("socketcall", unimplementedFunc),
271    /* 103 */ SyscallDesc("syslog", unimplementedFunc),
272    /* 104 */ SyscallDesc("setitimer", unimplementedFunc),
273    /* 105 */ SyscallDesc("getitimer", unimplementedFunc),
274    /* 106 */ SyscallDesc("stat",  statFunc<ArmLinux32>),
275    /* 107 */ SyscallDesc("lstat", unimplementedFunc),
276    /* 108 */ SyscallDesc("fstat", fstatFunc<ArmLinux32>),
277    /* 109 */ SyscallDesc("unused#109", unimplementedFunc),
278    /* 110 */ SyscallDesc("unused#101", unimplementedFunc),
279    /* 111 */ SyscallDesc("vhangup", unimplementedFunc),
280    /* 112 */ SyscallDesc("unused#112", unimplementedFunc),
281    /* 113 */ SyscallDesc("syscall", unimplementedFunc),
282    /* 114 */ SyscallDesc("wait4", unimplementedFunc),
283    /* 115 */ SyscallDesc("swapoff", unimplementedFunc),
284    /* 116 */ SyscallDesc("sysinfo", sysinfoFunc<ArmLinux32>),
285    /* 117 */ SyscallDesc("ipc", unimplementedFunc),
286    /* 118 */ SyscallDesc("fsync", unimplementedFunc),
287    /* 119 */ SyscallDesc("sigreturn", unimplementedFunc),
288    /* 120 */ SyscallDesc("clone", cloneFunc<ArmLinux32>),
289    /* 121 */ SyscallDesc("setdomainname", unimplementedFunc),
290    /* 122 */ SyscallDesc("uname", unameFunc32),
291    /* 123 */ SyscallDesc("unused#123", unimplementedFunc),
292    /* 124 */ SyscallDesc("adjtimex", unimplementedFunc),
293    /* 125 */ SyscallDesc("mprotect", ignoreFunc),
294    /* 126 */ SyscallDesc("sigprocmask", ignoreFunc, SyscallDesc::WarnOnce),
295    /* 127 */ SyscallDesc("unused#127", unimplementedFunc),
296    /* 128 */ SyscallDesc("init_module", unimplementedFunc),
297    /* 129 */ SyscallDesc("delete_module", unimplementedFunc),
298    /* 130 */ SyscallDesc("unused#130", unimplementedFunc),
299    /* 131 */ SyscallDesc("quotactl", unimplementedFunc),
300    /* 132 */ SyscallDesc("getpgid", unimplementedFunc),
301    /* 133 */ SyscallDesc("fchdir", unimplementedFunc),
302    /* 134 */ SyscallDesc("bdflush", unimplementedFunc),
303    /* 135 */ SyscallDesc("sysfs", unimplementedFunc),
304    /* 136 */ SyscallDesc("personality", unimplementedFunc),
305    /* 137 */ SyscallDesc("reserved#138", unimplementedFunc),
306    /* 138 */ SyscallDesc("setfsuid", unimplementedFunc),
307    /* 139 */ SyscallDesc("setfsgid", unimplementedFunc),
308    /* 140 */ SyscallDesc("llseek", _llseekFunc),
309#if defined(SYS_getdents)
310    /* 141 */ SyscallDesc("getdents", getdentsFunc),
311#else
312    /* 141 */ SyscallDesc("getdents", unimplementedFunc),
313#endif
314    /* 142 */ SyscallDesc("newselect", unimplementedFunc),
315    /* 143 */ SyscallDesc("flock", unimplementedFunc),
316    /* 144 */ SyscallDesc("msync", unimplementedFunc),
317    /* 145 */ SyscallDesc("readv", unimplementedFunc),
318    /* 146 */ SyscallDesc("writev", writevFunc<ArmLinux32>),
319    /* 147 */ SyscallDesc("getsid", unimplementedFunc),
320    /* 148 */ SyscallDesc("fdatasync", unimplementedFunc),
321    /* 149 */ SyscallDesc("sysctl", unimplementedFunc),
322    /* 150 */ SyscallDesc("mlock", unimplementedFunc),
323    /* 151 */ SyscallDesc("munlock", unimplementedFunc),
324    /* 152 */ SyscallDesc("mlockall", unimplementedFunc),
325    /* 153 */ SyscallDesc("munlockall", unimplementedFunc),
326    /* 154 */ SyscallDesc("sched_setparam", unimplementedFunc),
327    /* 155 */ SyscallDesc("sched_getparam", unimplementedFunc),
328    /* 156 */ SyscallDesc("sched_setscheduler", unimplementedFunc),
329    /* 157 */ SyscallDesc("sched_getscheduler", unimplementedFunc),
330    /* 158 */ SyscallDesc("sched_yield", unimplementedFunc),
331    /* 159 */ SyscallDesc("sched_get_priority_max", unimplementedFunc),
332    /* 160 */ SyscallDesc("sched_get_priority_min", unimplementedFunc),
333    /* 161 */ SyscallDesc("sched_rr_get_interval", unimplementedFunc),
334    /* 162 */ SyscallDesc("nanosleep", ignoreFunc, SyscallDesc::WarnOnce),
335    /* 163 */ SyscallDesc("mremap", mremapFunc<ArmLinux32>), // ARM-specific
336    /* 164 */ SyscallDesc("setresuid", unimplementedFunc),
337    /* 165 */ SyscallDesc("getresuid", unimplementedFunc),
338    /* 166 */ SyscallDesc("unused#166", unimplementedFunc),
339    /* 167 */ SyscallDesc("unused#167", unimplementedFunc),
340    /* 168 */ SyscallDesc("poll", unimplementedFunc),
341    /* 169 */ SyscallDesc("nfsservctl", unimplementedFunc),
342    /* 170 */ SyscallDesc("setresgid", unimplementedFunc),
343    /* 171 */ SyscallDesc("getresgid", unimplementedFunc),
344    /* 172 */ SyscallDesc("prctl", unimplementedFunc),
345    /* 173 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
346    /* 174 */ SyscallDesc("rt_sigaction", ignoreFunc, SyscallDesc::WarnOnce),
347    /* 175 */ SyscallDesc("rt_sigprocmask", ignoreFunc, SyscallDesc::WarnOnce),
348    /* 176 */ SyscallDesc("rt_sigpending", unimplementedFunc),
349    /* 177 */ SyscallDesc("rt_sigtimedwait", unimplementedFunc),
350    /* 178 */ SyscallDesc("rt_sigqueueinfo", ignoreFunc),
351    /* 179 */ SyscallDesc("rt_sigsuspend", unimplementedFunc),
352    /* 180 */ SyscallDesc("pread64", unimplementedFunc),
353    /* 181 */ SyscallDesc("pwrite64", unimplementedFunc),
354    /* 182 */ SyscallDesc("chown", unimplementedFunc),
355    /* 183 */ SyscallDesc("getcwd", getcwdFunc),
356    /* 184 */ SyscallDesc("capget", unimplementedFunc),
357    /* 185 */ SyscallDesc("capset", unimplementedFunc),
358    /* 186 */ SyscallDesc("sigaltstack", unimplementedFunc),
359    /* 187 */ SyscallDesc("sendfile", unimplementedFunc),
360    /* 188 */ SyscallDesc("unused#188", unimplementedFunc),
361    /* 189 */ SyscallDesc("unused#189", unimplementedFunc),
362    /* 190 */ SyscallDesc("vfork", unimplementedFunc),
363    /* 191 */ SyscallDesc("getrlimit", getrlimitFunc<ArmLinux32>),
364    /* 192 */ SyscallDesc("mmap2", mmapFunc<ArmLinux32>),
365    /* 193 */ SyscallDesc("truncate64", unimplementedFunc),
366    /* 194 */ SyscallDesc("ftruncate64", ftruncate64Func),
367    /* 195 */ SyscallDesc("stat64", stat64Func<ArmLinux32>),
368    /* 196 */ SyscallDesc("lstat64", lstat64Func<ArmLinux32>),
369    /* 197 */ SyscallDesc("fstat64", fstat64Func<ArmLinux32>),
370    /* 198 */ SyscallDesc("lchown", unimplementedFunc),
371    /* 199 */ SyscallDesc("getuid", getuidFunc),
372    /* 200 */ SyscallDesc("getgid", getgidFunc),
373    /* 201 */ SyscallDesc("geteuid", geteuidFunc),
374    /* 202 */ SyscallDesc("getegid", getegidFunc),
375    /* 203 */ SyscallDesc("setreuid", unimplementedFunc),
376    /* 204 */ SyscallDesc("setregid", unimplementedFunc),
377    /* 205 */ SyscallDesc("getgroups", unimplementedFunc),
378    /* 206 */ SyscallDesc("setgroups", unimplementedFunc),
379    /* 207 */ SyscallDesc("fchown", unimplementedFunc),
380    /* 208 */ SyscallDesc("setresuid", unimplementedFunc),
381    /* 209 */ SyscallDesc("getresuid", unimplementedFunc),
382    /* 210 */ SyscallDesc("setresgid", unimplementedFunc),
383    /* 211 */ SyscallDesc("getresgid", unimplementedFunc),
384    /* 212 */ SyscallDesc("chown", unimplementedFunc),
385    /* 213 */ SyscallDesc("setuid", unimplementedFunc),
386    /* 214 */ SyscallDesc("setgid", unimplementedFunc),
387    /* 215 */ SyscallDesc("setfsuid", unimplementedFunc),
388    /* 216 */ SyscallDesc("setfsgid", unimplementedFunc),
389#if defined(SYS_getdents64)
390    /* 217 */ SyscallDesc("getdents64", getdents64Func),
391#else
392    /* 217 */ SyscallDesc("getdents64", unimplementedFunc),
393#endif
394    /* 218 */ SyscallDesc("pivot_root", unimplementedFunc),
395    /* 219 */ SyscallDesc("mincore", unimplementedFunc),
396    /* 220 */ SyscallDesc("madvise", ignoreFunc),
397    /* 221 */ SyscallDesc("fcntl64", fcntl64Func),
398    /* 222 */ SyscallDesc("unused#222", unimplementedFunc),
399    /* 223 */ SyscallDesc("unknown#223", unimplementedFunc),
400    /* 224 */ SyscallDesc("gettid", gettidFunc),
401    /* 225 */ SyscallDesc("readahead", unimplementedFunc),
402    /* 226 */ SyscallDesc("setxattr", unimplementedFunc),
403    /* 227 */ SyscallDesc("lsetxattr", unimplementedFunc),
404    /* 228 */ SyscallDesc("fsetxattr", unimplementedFunc),
405    /* 229 */ SyscallDesc("getxattr", unimplementedFunc),
406    /* 230 */ SyscallDesc("lgetxattr", unimplementedFunc),
407    /* 231 */ SyscallDesc("fgetxattr", unimplementedFunc),
408    /* 232 */ SyscallDesc("listxattr", unimplementedFunc),
409    /* 233 */ SyscallDesc("llistxattr", unimplementedFunc),
410    /* 234 */ SyscallDesc("flistxattr", unimplementedFunc),
411    /* 235 */ SyscallDesc("removexattr", unimplementedFunc),
412    /* 236 */ SyscallDesc("lremovexattr", unimplementedFunc),
413    /* 237 */ SyscallDesc("fremovexattr", unimplementedFunc),
414    /* 238 */ SyscallDesc("tkill", unimplementedFunc),
415    /* 239 */ SyscallDesc("sendfile64", unimplementedFunc),
416    /* 240 */ SyscallDesc("futex", futexFunc<ArmLinux32>),
417    /* 241 */ SyscallDesc("sched_setaffinity", unimplementedFunc),
418    /* 242 */ SyscallDesc("sched_getaffinity", ignoreFunc),
419    /* 243 */ SyscallDesc("io_setup", unimplementedFunc),
420    /* 244 */ SyscallDesc("io_destroy", unimplementedFunc),
421    /* 245 */ SyscallDesc("io_getevents", unimplementedFunc),
422    /* 246 */ SyscallDesc("io_submit", unimplementedFunc),
423    /* 247 */ SyscallDesc("io_cancel", unimplementedFunc),
424    /* 248 */ SyscallDesc("exit_group", exitGroupFunc),
425    /* 249 */ SyscallDesc("lookup_dcookie", unimplementedFunc),
426    /* 250 */ SyscallDesc("epoll_create", unimplementedFunc),
427    /* 251 */ SyscallDesc("epoll_ctl", unimplementedFunc),
428    /* 252 */ SyscallDesc("epoll_wait", unimplementedFunc),
429    /* 253 */ SyscallDesc("remap_file_pages", unimplementedFunc),
430    /* 254 */ SyscallDesc("unused#254", unimplementedFunc),
431    /* 255 */ SyscallDesc("unused#255", unimplementedFunc),
432    /* 256 */ SyscallDesc("set_tid_address", setTidAddressFunc),
433    /* 257 */ SyscallDesc("timer_create", unimplementedFunc),
434    /* 258 */ SyscallDesc("timer_settime", unimplementedFunc),
435    /* 259 */ SyscallDesc("timer_gettime", unimplementedFunc),
436    /* 260 */ SyscallDesc("timer_getoverrun", unimplementedFunc),
437    /* 261 */ SyscallDesc("timer_delete", unimplementedFunc),
438    /* 262 */ SyscallDesc("clock_settime", unimplementedFunc),
439    /* 263 */ SyscallDesc("clock_gettime", clock_gettimeFunc<ArmLinux32>),
440    /* 264 */ SyscallDesc("clock_getres", clock_getresFunc<ArmLinux32>),
441    /* 265 */ SyscallDesc("clock_nanosleep", unimplementedFunc),
442    /* 266 */ SyscallDesc("statfs64", unimplementedFunc),
443    /* 267 */ SyscallDesc("fstatfs64", unimplementedFunc),
444    /* 268 */ SyscallDesc("tgkill", tgkillFunc<ArmLinux32>),
445    /* 269 */ SyscallDesc("utimes", unimplementedFunc),
446    /* 270 */ SyscallDesc("arm_fadvise64_64", unimplementedFunc),
447    /* 271 */ SyscallDesc("pciconfig_iobase", unimplementedFunc),
448    /* 272 */ SyscallDesc("pciconfig_read", unimplementedFunc),
449    /* 273 */ SyscallDesc("pciconfig_write", unimplementedFunc),
450    /* 274 */ SyscallDesc("mq_open", unimplementedFunc),
451    /* 275 */ SyscallDesc("mq_unlink", unimplementedFunc),
452    /* 276 */ SyscallDesc("mq_timedsend", unimplementedFunc),
453    /* 277 */ SyscallDesc("mq_timedreceive", unimplementedFunc),
454    /* 278 */ SyscallDesc("mq_notify", unimplementedFunc),
455    /* 279 */ SyscallDesc("mq_getsetattr", unimplementedFunc),
456    /* 280 */ SyscallDesc("waitid", unimplementedFunc),
457    /* 281 */ SyscallDesc("socket", unimplementedFunc),
458    /* 282 */ SyscallDesc("bind", unimplementedFunc),
459    /* 283 */ SyscallDesc("connect", unimplementedFunc),
460    /* 284 */ SyscallDesc("listen", unimplementedFunc),
461    /* 285 */ SyscallDesc("accept", unimplementedFunc),
462    /* 286 */ SyscallDesc("getsockname", unimplementedFunc),
463    /* 287 */ SyscallDesc("getpeername", unimplementedFunc),
464    /* 288 */ SyscallDesc("socketpair", unimplementedFunc),
465    /* 289 */ SyscallDesc("send", unimplementedFunc),
466    /* 290 */ SyscallDesc("sendto", unimplementedFunc),
467    /* 291 */ SyscallDesc("recv", unimplementedFunc),
468    /* 292 */ SyscallDesc("recvfrom", unimplementedFunc),
469    /* 293 */ SyscallDesc("shutdown", unimplementedFunc),
470    /* 294 */ SyscallDesc("setsockopt", unimplementedFunc),
471    /* 295 */ SyscallDesc("getsockopt", unimplementedFunc),
472    /* 296 */ SyscallDesc("sendmsg", unimplementedFunc),
473    /* 297 */ SyscallDesc("rcvmsg", unimplementedFunc),
474    /* 298 */ SyscallDesc("semop", unimplementedFunc),
475    /* 299 */ SyscallDesc("semget", unimplementedFunc),
476    /* 300 */ SyscallDesc("semctl", unimplementedFunc),
477    /* 301 */ SyscallDesc("msgsend", unimplementedFunc),
478    /* 302 */ SyscallDesc("msgrcv", unimplementedFunc),
479    /* 303 */ SyscallDesc("msgget", unimplementedFunc),
480    /* 304 */ SyscallDesc("msgctl", unimplementedFunc),
481    /* 305 */ SyscallDesc("shmat", unimplementedFunc),
482    /* 306 */ SyscallDesc("shmdt", unimplementedFunc),
483    /* 307 */ SyscallDesc("shmget", unimplementedFunc),
484    /* 308 */ SyscallDesc("shmctl", unimplementedFunc),
485    /* 309 */ SyscallDesc("add_key", unimplementedFunc),
486    /* 310 */ SyscallDesc("request_key", unimplementedFunc),
487    /* 311 */ SyscallDesc("keyctl", unimplementedFunc),
488    /* 312 */ SyscallDesc("semtimedop", unimplementedFunc),
489    /* 313 */ SyscallDesc("unused#313", unimplementedFunc),
490    /* 314 */ SyscallDesc("ioprio_set", unimplementedFunc),
491    /* 315 */ SyscallDesc("ioprio_get", unimplementedFunc),
492    /* 316 */ SyscallDesc("inotify_init", unimplementedFunc),
493    /* 317 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
494    /* 318 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
495    /* 319 */ SyscallDesc("mbind", unimplementedFunc),
496    /* 320 */ SyscallDesc("get_mempolicy", unimplementedFunc),
497    /* 321 */ SyscallDesc("set_mempolicy", unimplementedFunc),
498    /* 322 */ SyscallDesc("openat", openatFunc<ArmLinux32>),
499    /* 323 */ SyscallDesc("mkdirat", unimplementedFunc),
500    /* 324 */ SyscallDesc("mknodat", unimplementedFunc),
501    /* 325 */ SyscallDesc("fchownat", unimplementedFunc),
502    /* 326 */ SyscallDesc("futimesat", unimplementedFunc),
503    /* 327 */ SyscallDesc("fstatat64", unimplementedFunc),
504    /* 328 */ SyscallDesc("unlinkat", unimplementedFunc),
505    /* 329 */ SyscallDesc("renameat", unimplementedFunc),
506    /* 330 */ SyscallDesc("linkat", unimplementedFunc),
507    /* 331 */ SyscallDesc("symlinkat", unimplementedFunc),
508    /* 332 */ SyscallDesc("readlinkat", unimplementedFunc),
509    /* 333 */ SyscallDesc("fchmodat", unimplementedFunc),
510    /* 334 */ SyscallDesc("faccessat", unimplementedFunc),
511    /* 335 */ SyscallDesc("pselect6", unimplementedFunc),
512    /* 336 */ SyscallDesc("ppoll", unimplementedFunc),
513    /* 337 */ SyscallDesc("unshare", unimplementedFunc),
514    /* 338 */ SyscallDesc("set_robust_list", ignoreFunc),
515    /* 339 */ SyscallDesc("get_robust_list", unimplementedFunc),
516    /* 340 */ SyscallDesc("splice", unimplementedFunc),
517    /* 341 */ SyscallDesc("arm_sync_file_range", unimplementedFunc),
518    /* 342 */ SyscallDesc("tee", unimplementedFunc),
519    /* 343 */ SyscallDesc("vmsplice", unimplementedFunc),
520    /* 344 */ SyscallDesc("move_pages", unimplementedFunc),
521    /* 345 */ SyscallDesc("getcpu", unimplementedFunc),
522    /* 346 */ SyscallDesc("epoll_pwait", unimplementedFunc),
523    /* 347 */ SyscallDesc("sys_kexec_load", unimplementedFunc),
524    /* 348 */ SyscallDesc("sys_utimensat", unimplementedFunc),
525    /* 349 */ SyscallDesc("sys_signalfd", unimplementedFunc),
526    /* 350 */ SyscallDesc("sys_timerfd_create", unimplementedFunc),
527    /* 351 */ SyscallDesc("sys_eventfd", unimplementedFunc),
528    /* 352 */ SyscallDesc("sys_fallocate", unimplementedFunc),
529    /* 353 */ SyscallDesc("sys_timerfd_settime", unimplementedFunc),
530    /* 354 */ SyscallDesc("sys_timerfd_gettime", unimplementedFunc),
531    /* 355 */ SyscallDesc("sys_signalfd4", unimplementedFunc),
532    /* 356 */ SyscallDesc("sys_eventfd2", unimplementedFunc),
533    /* 357 */ SyscallDesc("sys_epoll_create1", unimplementedFunc),
534    /* 358 */ SyscallDesc("sys_dup3", unimplementedFunc),
535    /* 359 */ SyscallDesc("sys_pipe2", unimplementedFunc),
536    /* 360 */ SyscallDesc("sys_inotify_init1", unimplementedFunc),
537    /* 361 */ SyscallDesc("sys_preadv", unimplementedFunc),
538    /* 362 */ SyscallDesc("sys_pwritev", unimplementedFunc),
539    /* 363 */ SyscallDesc("sys_rt_tgsigqueueinfo", unimplementedFunc),
540    /* 364 */ SyscallDesc("sys_perf_event_open", unimplementedFunc),
541    /* 365 */ SyscallDesc("sys_recvmmsg", unimplementedFunc),
542};
543
544static SyscallDesc syscallDescs64[] = {
545    /*    0 */ SyscallDesc("io_setup", unimplementedFunc),
546    /*    1 */ SyscallDesc("io_destroy", unimplementedFunc),
547    /*    2 */ SyscallDesc("io_submit", unimplementedFunc),
548    /*    3 */ SyscallDesc("io_cancel", unimplementedFunc),
549    /*    4 */ SyscallDesc("io_getevents", unimplementedFunc),
550    /*    5 */ SyscallDesc("setxattr", unimplementedFunc),
551    /*    6 */ SyscallDesc("lsetxattr", unimplementedFunc),
552    /*    7 */ SyscallDesc("fsetxattr", unimplementedFunc),
553    /*    8 */ SyscallDesc("getxattr", unimplementedFunc),
554    /*    9 */ SyscallDesc("lgetxattr", unimplementedFunc),
555    /*   10 */ SyscallDesc("fgetxattr", unimplementedFunc),
556    /*   11 */ SyscallDesc("listxattr", unimplementedFunc),
557    /*   12 */ SyscallDesc("llistxattr", unimplementedFunc),
558    /*   13 */ SyscallDesc("flistxattr", unimplementedFunc),
559    /*   14 */ SyscallDesc("removexattr", unimplementedFunc),
560    /*   15 */ SyscallDesc("lremovexattr", unimplementedFunc),
561    /*   16 */ SyscallDesc("fremovexattr", unimplementedFunc),
562    /*   17 */ SyscallDesc("getcwd", getcwdFunc),
563    /*   18 */ SyscallDesc("lookup_dcookie", unimplementedFunc),
564    /*   19 */ SyscallDesc("eventfd2", unimplementedFunc),
565    /*   20 */ SyscallDesc("epoll_create1", unimplementedFunc),
566    /*   21 */ SyscallDesc("epoll_ctl", unimplementedFunc),
567    /*   22 */ SyscallDesc("epoll_pwait", unimplementedFunc),
568    /*   23 */ SyscallDesc("dup", dupFunc),
569    /*   24 */ SyscallDesc("dup3", unimplementedFunc),
570    /*   25 */ SyscallDesc("fcntl64", fcntl64Func),
571    /*   26 */ SyscallDesc("inotify_init1", unimplementedFunc),
572    /*   27 */ SyscallDesc("inotify_add_watch", unimplementedFunc),
573    /*   28 */ SyscallDesc("inotify_rm_watch", unimplementedFunc),
574    /*   29 */ SyscallDesc("ioctl", ioctlFunc<ArmLinux64>),
575    /*   30 */ SyscallDesc("ioprio_set", unimplementedFunc),
576    /*   31 */ SyscallDesc("ioprio_get", unimplementedFunc),
577    /*   32 */ SyscallDesc("flock", unimplementedFunc),
578    /*   33 */ SyscallDesc("mknodat", unimplementedFunc),
579    /*   34 */ SyscallDesc("mkdirat", unimplementedFunc),
580    /*   35 */ SyscallDesc("unlinkat", unlinkatFunc<ArmLinux64>),
581    /*   36 */ SyscallDesc("symlinkat", unimplementedFunc),
582    /*   37 */ SyscallDesc("linkat", unimplementedFunc),
583    /*   38 */ SyscallDesc("renameat", renameatFunc<ArmLinux64>),
584    /*   39 */ SyscallDesc("umount2", unimplementedFunc),
585    /*   40 */ SyscallDesc("mount", unimplementedFunc),
586    /*   41 */ SyscallDesc("pivot_root", unimplementedFunc),
587    /*   42 */ SyscallDesc("nfsservctl", unimplementedFunc),
588    /*   43 */ SyscallDesc("statfs64", unimplementedFunc),
589    /*   44 */ SyscallDesc("fstatfs64", unimplementedFunc),
590    /*   45 */ SyscallDesc("truncate64", unimplementedFunc),
591    /*   46 */ SyscallDesc("ftruncate64", ftruncate64Func),
592    /*   47 */ SyscallDesc("fallocate", unimplementedFunc),
593    /*   48 */ SyscallDesc("faccessat", faccessatFunc<ArmLinux64>),
594    /*   49 */ SyscallDesc("chdir", unimplementedFunc),
595    /*   50 */ SyscallDesc("fchdir", unimplementedFunc),
596    /*   51 */ SyscallDesc("chroot", unimplementedFunc),
597    /*   52 */ SyscallDesc("fchmod", unimplementedFunc),
598    /*   53 */ SyscallDesc("fchmodat", unimplementedFunc),
599    /*   54 */ SyscallDesc("fchownat", unimplementedFunc),
600    /*   55 */ SyscallDesc("fchown", unimplementedFunc),
601    /*   56 */ SyscallDesc("openat", openatFunc<ArmLinux64>),
602    /*   57 */ SyscallDesc("close", closeFunc),
603    /*   58 */ SyscallDesc("vhangup", unimplementedFunc),
604    /*   59 */ SyscallDesc("pipe2", unimplementedFunc),
605    /*   60 */ SyscallDesc("quotactl", unimplementedFunc),
606#if defined(SYS_getdents64)
607    /*   61 */ SyscallDesc("getdents64", getdents64Func),
608#else
609    /*   61 */ SyscallDesc("getdents64", unimplementedFunc),
610#endif
611    /*   62 */ SyscallDesc("llseek", lseekFunc),
612    /*   63 */ SyscallDesc("read", readFunc<ArmLinux64>),
613    /*   64 */ SyscallDesc("write", writeFunc<ArmLinux64>),
614    /*   65 */ SyscallDesc("readv", unimplementedFunc),
615    /*   66 */ SyscallDesc("writev", writevFunc<ArmLinux64>),
616    /*   67 */ SyscallDesc("pread64", unimplementedFunc),
617    /*   68 */ SyscallDesc("pwrite64", unimplementedFunc),
618    /*   69 */ SyscallDesc("preadv", unimplementedFunc),
619    /*   70 */ SyscallDesc("pwritev", unimplementedFunc),
620    /*   71 */ SyscallDesc("sendfile64", unimplementedFunc),
621    /*   72 */ SyscallDesc("pselect6", unimplementedFunc),
622    /*   73 */ SyscallDesc("ppoll", unimplementedFunc),
623    /*   74 */ SyscallDesc("signalfd4", unimplementedFunc),
624    /*   75 */ SyscallDesc("vmsplice", unimplementedFunc),
625    /*   76 */ SyscallDesc("splice", unimplementedFunc),
626    /*   77 */ SyscallDesc("tee", unimplementedFunc),
627    /*   78 */ SyscallDesc("readlinkat", readlinkatFunc<ArmLinux64>),
628    /*   79 */ SyscallDesc("fstatat64", fstatat64Func<ArmLinux64>),
629    /*   80 */ SyscallDesc("fstat64", fstat64Func<ArmLinux64>),
630    /*   81 */ SyscallDesc("sync", unimplementedFunc),
631    /*   82 */ SyscallDesc("fsync", unimplementedFunc),
632    /*   83 */ SyscallDesc("fdatasync", unimplementedFunc),
633    /*   84 */ SyscallDesc("sync_file_range", unimplementedFunc),
634    /*   85 */ SyscallDesc("timerfd_create", unimplementedFunc),
635    /*   86 */ SyscallDesc("timerfd_settime", unimplementedFunc),
636    /*   87 */ SyscallDesc("timerfd_gettime", unimplementedFunc),
637    /*   88 */ SyscallDesc("utimensat", unimplementedFunc),
638    /*   89 */ SyscallDesc("acct", unimplementedFunc),
639    /*   90 */ SyscallDesc("capget", unimplementedFunc),
640    /*   91 */ SyscallDesc("capset", unimplementedFunc),
641    /*   92 */ SyscallDesc("personality", unimplementedFunc),
642    /*   93 */ SyscallDesc("exit", exitFunc),
643    /*   94 */ SyscallDesc("exit_group", exitGroupFunc),
644    /*   95 */ SyscallDesc("waitid", unimplementedFunc),
645    /*   96 */ SyscallDesc("set_tid_address", setTidAddressFunc),
646    /*   97 */ SyscallDesc("unshare", unimplementedFunc),
647    /*   98 */ SyscallDesc("futex", futexFunc<ArmLinux64>),
648    /*   99 */ SyscallDesc("set_robust_list", ignoreFunc),
649    /*  100 */ SyscallDesc("get_robust_list", unimplementedFunc),
650    /*  101 */ SyscallDesc("nanosleep", ignoreFunc, SyscallDesc::WarnOnce),
651    /*  102 */ SyscallDesc("getitimer", unimplementedFunc),
652    /*  103 */ SyscallDesc("setitimer", unimplementedFunc),
653    /*  104 */ SyscallDesc("kexec_load", unimplementedFunc),
654    /*  105 */ SyscallDesc("init_module", unimplementedFunc),
655    /*  106 */ SyscallDesc("delete_module", unimplementedFunc),
656    /*  107 */ SyscallDesc("timer_create", unimplementedFunc),
657    /*  108 */ SyscallDesc("timer_gettime", unimplementedFunc),
658    /*  109 */ SyscallDesc("timer_getoverrun", unimplementedFunc),
659    /*  110 */ SyscallDesc("timer_settime", unimplementedFunc),
660    /*  111 */ SyscallDesc("timer_delete", unimplementedFunc),
661    /*  112 */ SyscallDesc("clock_settime", unimplementedFunc),
662    /*  113 */ SyscallDesc("clock_gettime", clock_gettimeFunc<ArmLinux64>),
663    /*  114 */ SyscallDesc("clock_getres", unimplementedFunc),
664    /*  115 */ SyscallDesc("clock_nanosleep", unimplementedFunc),
665    /*  116 */ SyscallDesc("syslog", unimplementedFunc),
666    /*  117 */ SyscallDesc("ptrace", unimplementedFunc),
667    /*  118 */ SyscallDesc("sched_setparam", unimplementedFunc),
668    /*  119 */ SyscallDesc("sched_setscheduler", unimplementedFunc),
669    /*  120 */ SyscallDesc("sched_getscheduler", unimplementedFunc),
670    /*  121 */ SyscallDesc("sched_getparam", unimplementedFunc),
671    /*  122 */ SyscallDesc("sched_setaffinity", unimplementedFunc),
672    /*  123 */ SyscallDesc("sched_getaffinity", ignoreFunc),
673    /*  124 */ SyscallDesc("sched_yield", unimplementedFunc),
674    /*  125 */ SyscallDesc("sched_get_priority_max", unimplementedFunc),
675    /*  126 */ SyscallDesc("sched_get_priority_min", unimplementedFunc),
676    /*  127 */ SyscallDesc("sched_rr_get_interval", unimplementedFunc),
677    /*  128 */ SyscallDesc("restart_syscall", unimplementedFunc),
678    /*  129 */ SyscallDesc("kill", ignoreFunc),
679    /*  130 */ SyscallDesc("tkill", unimplementedFunc),
680    /*  131 */ SyscallDesc("tgkill", tgkillFunc<ArmLinux64>),
681    /*  132 */ SyscallDesc("sigaltstack", unimplementedFunc),
682    /*  133 */ SyscallDesc("rt_sigsuspend", unimplementedFunc),
683    /*  134 */ SyscallDesc("rt_sigaction", ignoreFunc),
684    /*  135 */ SyscallDesc("rt_sigprocmask", ignoreFunc, SyscallDesc::WarnOnce),
685    /*  136 */ SyscallDesc("rt_sigpending", unimplementedFunc),
686    /*  137 */ SyscallDesc("rt_sigtimedwait", unimplementedFunc),
687    /*  138 */ SyscallDesc("rt_sigqueueinfo", ignoreFunc),
688    /*  139 */ SyscallDesc("rt_sigreturn", unimplementedFunc),
689    /*  140 */ SyscallDesc("setpriority", unimplementedFunc),
690    /*  141 */ SyscallDesc("getpriority", unimplementedFunc),
691    /*  142 */ SyscallDesc("reboot", unimplementedFunc),
692    /*  143 */ SyscallDesc("setregid", unimplementedFunc),
693    /*  144 */ SyscallDesc("setgid", unimplementedFunc),
694    /*  145 */ SyscallDesc("setreuid", unimplementedFunc),
695    /*  146 */ SyscallDesc("setuid", unimplementedFunc),
696    /*  147 */ SyscallDesc("setresuid", unimplementedFunc),
697    /*  148 */ SyscallDesc("getresuid", unimplementedFunc),
698    /*  149 */ SyscallDesc("setresgid", unimplementedFunc),
699    /*  150 */ SyscallDesc("getresgid", unimplementedFunc),
700    /*  151 */ SyscallDesc("setfsuid", unimplementedFunc),
701    /*  152 */ SyscallDesc("setfsgid", unimplementedFunc),
702    /*  153 */ SyscallDesc("times", timesFunc<ArmLinux64>),
703    /*  154 */ SyscallDesc("setpgid", unimplementedFunc),
704    /*  155 */ SyscallDesc("getpgid", unimplementedFunc),
705    /*  156 */ SyscallDesc("getsid", unimplementedFunc),
706    /*  157 */ SyscallDesc("setsid", unimplementedFunc),
707    /*  158 */ SyscallDesc("getgroups", unimplementedFunc),
708    /*  159 */ SyscallDesc("setgroups", unimplementedFunc),
709    /*  160 */ SyscallDesc("uname", unameFunc64),
710    /*  161 */ SyscallDesc("sethostname", ignoreFunc),
711    /*  162 */ SyscallDesc("setdomainname", unimplementedFunc),
712    /*  163 */ SyscallDesc("getrlimit", getrlimitFunc<ArmLinux64>),
713    /*  164 */ SyscallDesc("setrlimit", ignoreFunc),
714    /*  165 */ SyscallDesc("getrusage", getrusageFunc<ArmLinux64>),
715    /*  166 */ SyscallDesc("umask", unimplementedFunc),
716    /*  167 */ SyscallDesc("prctl", unimplementedFunc),
717    /*  168 */ SyscallDesc("getcpu", unimplementedFunc),
718    /*  169 */ SyscallDesc("gettimeofday", gettimeofdayFunc<ArmLinux64>),
719    /*  170 */ SyscallDesc("settimeofday", unimplementedFunc),
720    /*  171 */ SyscallDesc("adjtimex", unimplementedFunc),
721    /*  172 */ SyscallDesc("getpid", getpidFunc),
722    /*  173 */ SyscallDesc("getppid", getppidFunc),
723    /*  174 */ SyscallDesc("getuid", getuidFunc),
724    /*  175 */ SyscallDesc("geteuid", geteuidFunc),
725    /*  176 */ SyscallDesc("getgid", getgidFunc),
726    /*  177 */ SyscallDesc("getegid", getegidFunc),
727    /*  178 */ SyscallDesc("gettid", gettidFunc),
728    /*  179 */ SyscallDesc("sysinfo", sysinfoFunc<ArmLinux64>),
729    /*  180 */ SyscallDesc("mq_open", unimplementedFunc),
730    /*  181 */ SyscallDesc("mq_unlink", unimplementedFunc),
731    /*  182 */ SyscallDesc("mq_timedsend", unimplementedFunc),
732    /*  183 */ SyscallDesc("mq_timedreceive", unimplementedFunc),
733    /*  184 */ SyscallDesc("mq_notify", unimplementedFunc),
734    /*  185 */ SyscallDesc("mq_getsetattr", unimplementedFunc),
735    /*  186 */ SyscallDesc("msgget", unimplementedFunc),
736    /*  187 */ SyscallDesc("msgctl", unimplementedFunc),
737    /*  188 */ SyscallDesc("msgrcv", unimplementedFunc),
738    /*  189 */ SyscallDesc("msgsnd", unimplementedFunc),
739    /*  190 */ SyscallDesc("semget", unimplementedFunc),
740    /*  191 */ SyscallDesc("semctl", unimplementedFunc),
741    /*  192 */ SyscallDesc("semtimedop", unimplementedFunc),
742    /*  193 */ SyscallDesc("semop", unimplementedFunc),
743    /*  194 */ SyscallDesc("shmget", unimplementedFunc),
744    /*  195 */ SyscallDesc("shmctl", unimplementedFunc),
745    /*  196 */ SyscallDesc("shmat", unimplementedFunc),
746    /*  197 */ SyscallDesc("shmdt", unimplementedFunc),
747    /*  198 */ SyscallDesc("socket", unimplementedFunc),
748    /*  199 */ SyscallDesc("socketpair", unimplementedFunc),
749    /*  200 */ SyscallDesc("bind", unimplementedFunc),
750    /*  201 */ SyscallDesc("listen", unimplementedFunc),
751    /*  202 */ SyscallDesc("accept", unimplementedFunc),
752    /*  203 */ SyscallDesc("connect", unimplementedFunc),
753    /*  204 */ SyscallDesc("getsockname", unimplementedFunc),
754    /*  205 */ SyscallDesc("getpeername", unimplementedFunc),
755    /*  206 */ SyscallDesc("sendto", unimplementedFunc),
756    /*  207 */ SyscallDesc("recvfrom", unimplementedFunc),
757    /*  208 */ SyscallDesc("setsockopt", unimplementedFunc),
758    /*  209 */ SyscallDesc("getsockopt", unimplementedFunc),
759    /*  210 */ SyscallDesc("shutdown", unimplementedFunc),
760    /*  211 */ SyscallDesc("sendmsg", unimplementedFunc),
761    /*  212 */ SyscallDesc("recvmsg", unimplementedFunc),
762    /*  213 */ SyscallDesc("readahead", unimplementedFunc),
763    /*  214 */ SyscallDesc("brk", brkFunc),
764    /*  215 */ SyscallDesc("munmap", munmapFunc),
765    /*  216 */ SyscallDesc("mremap", mremapFunc<ArmLinux64>),
766    /*  217 */ SyscallDesc("add_key", unimplementedFunc),
767    /*  218 */ SyscallDesc("request_key", unimplementedFunc),
768    /*  219 */ SyscallDesc("keyctl", unimplementedFunc),
769    /*  220 */ SyscallDesc("clone", cloneFunc<ArmLinux64>),
770    /*  221 */ SyscallDesc("execve", execveFunc<ArmLinux64>),
771    /*  222 */ SyscallDesc("mmap2", mmapFunc<ArmLinux64>),
772    /*  223 */ SyscallDesc("fadvise64_64", unimplementedFunc),
773    /*  224 */ SyscallDesc("swapon", unimplementedFunc),
774    /*  225 */ SyscallDesc("swapoff", unimplementedFunc),
775    /*  226 */ SyscallDesc("mprotect", ignoreFunc),
776    /*  227 */ SyscallDesc("msync", unimplementedFunc),
777    /*  228 */ SyscallDesc("mlock", unimplementedFunc),
778    /*  229 */ SyscallDesc("munlock", unimplementedFunc),
779    /*  230 */ SyscallDesc("mlockall", unimplementedFunc),
780    /*  231 */ SyscallDesc("munlockall", unimplementedFunc),
781    /*  232 */ SyscallDesc("mincore", unimplementedFunc),
782    /*  233 */ SyscallDesc("madvise", ignoreFunc),
783    /*  234 */ SyscallDesc("remap_file_pages", unimplementedFunc),
784    /*  235 */ SyscallDesc("mbind", unimplementedFunc),
785    /*  236 */ SyscallDesc("get_mempolicy", unimplementedFunc),
786    /*  237 */ SyscallDesc("set_mempolicy", unimplementedFunc),
787    /*  238 */ SyscallDesc("migrate_pages", unimplementedFunc),
788    /*  239 */ SyscallDesc("move_pages", unimplementedFunc),
789    /*  240 */ SyscallDesc("rt_tgsigqueueinfo", unimplementedFunc),
790    /*  241 */ SyscallDesc("perf_event_open", unimplementedFunc),
791    /*  242 */ SyscallDesc("accept4", unimplementedFunc),
792    /*  243 */ SyscallDesc("recvmmsg", unimplementedFunc),
793    /*  244 */ SyscallDesc("unused#244", unimplementedFunc),
794    /*  245 */ SyscallDesc("unused#245", unimplementedFunc),
795    /*  246 */ SyscallDesc("unused#246", unimplementedFunc),
796    /*  247 */ SyscallDesc("unused#247", unimplementedFunc),
797    /*  248 */ SyscallDesc("unused#248", unimplementedFunc),
798    /*  249 */ SyscallDesc("unused#249", unimplementedFunc),
799    /*  250 */ SyscallDesc("unused#250", unimplementedFunc),
800    /*  251 */ SyscallDesc("unused#251", unimplementedFunc),
801    /*  252 */ SyscallDesc("unused#252", unimplementedFunc),
802    /*  253 */ SyscallDesc("unused#253", unimplementedFunc),
803    /*  254 */ SyscallDesc("unused#254", unimplementedFunc),
804    /*  255 */ SyscallDesc("unused#255", unimplementedFunc),
805    /*  256 */ SyscallDesc("unused#256", unimplementedFunc),
806    /*  257 */ SyscallDesc("unused#257", unimplementedFunc),
807    /*  258 */ SyscallDesc("unused#258", unimplementedFunc),
808    /*  259 */ SyscallDesc("unused#259", unimplementedFunc),
809    /*  260 */ SyscallDesc("wait4", unimplementedFunc),
810    /*  261 */ SyscallDesc("prlimit64", prlimitFunc<ArmLinux64>),
811    /*  262 */ SyscallDesc("fanotify_init", unimplementedFunc),
812    /*  263 */ SyscallDesc("fanotify_mark", unimplementedFunc),
813    /*  264 */ SyscallDesc("name_to_handle_at", unimplementedFunc),
814    /*  265 */ SyscallDesc("open_by_handle_at", unimplementedFunc),
815    /*  266 */ SyscallDesc("clock_adjtime", unimplementedFunc),
816    /*  267 */ SyscallDesc("syncfs", unimplementedFunc),
817    /*  268 */ SyscallDesc("setns", unimplementedFunc),
818    /*  269 */ SyscallDesc("sendmmsg", unimplementedFunc),
819    /*  270 */ SyscallDesc("process_vm_readv", unimplementedFunc),
820    /*  271 */ SyscallDesc("process_vm_writev", unimplementedFunc),
821    /*  272 */ SyscallDesc("unused#272", unimplementedFunc),
822    /*  273 */ SyscallDesc("unused#273", unimplementedFunc),
823    /*  274 */ SyscallDesc("unused#274", unimplementedFunc),
824    /*  275 */ SyscallDesc("unused#275", unimplementedFunc),
825    /*  276 */ SyscallDesc("unused#276", unimplementedFunc),
826    /*  277 */ SyscallDesc("unused#277", unimplementedFunc),
827    /*  278 */ SyscallDesc("unused#278", unimplementedFunc),
828    /*  279 */ SyscallDesc("unused#279", unimplementedFunc),
829    /*  280 */ SyscallDesc("unused#280", unimplementedFunc),
830    /*  281 */ SyscallDesc("unused#281", unimplementedFunc),
831    /*  282 */ SyscallDesc("unused#282", unimplementedFunc),
832    /*  283 */ SyscallDesc("unused#283", unimplementedFunc),
833    /*  284 */ SyscallDesc("unused#284", unimplementedFunc),
834    /*  285 */ SyscallDesc("unused#285", unimplementedFunc),
835    /*  286 */ SyscallDesc("unused#286", unimplementedFunc),
836    /*  287 */ SyscallDesc("unused#287", unimplementedFunc),
837    /*  288 */ SyscallDesc("unused#288", unimplementedFunc),
838    /*  289 */ SyscallDesc("unused#289", unimplementedFunc),
839    /*  290 */ SyscallDesc("unused#290", unimplementedFunc),
840    /*  291 */ SyscallDesc("unused#291", unimplementedFunc),
841    /*  292 */ SyscallDesc("unused#292", unimplementedFunc),
842    /*  293 */ SyscallDesc("unused#293", unimplementedFunc),
843    /*  294 */ SyscallDesc("unused#294", unimplementedFunc),
844    /*  295 */ SyscallDesc("unused#295", unimplementedFunc),
845    /*  296 */ SyscallDesc("unused#296", unimplementedFunc),
846    /*  297 */ SyscallDesc("unused#297", unimplementedFunc),
847    /*  298 */ SyscallDesc("unused#298", unimplementedFunc),
848    /*  299 */ SyscallDesc("unused#299", unimplementedFunc),
849    /*  300 */ SyscallDesc("unused#300", unimplementedFunc),
850    /*  301 */ SyscallDesc("unused#301", unimplementedFunc),
851    /*  302 */ SyscallDesc("unused#302", unimplementedFunc),
852    /*  303 */ SyscallDesc("unused#303", unimplementedFunc),
853    /*  304 */ SyscallDesc("unused#304", unimplementedFunc),
854    /*  305 */ SyscallDesc("unused#305", unimplementedFunc),
855    /*  306 */ SyscallDesc("unused#306", unimplementedFunc),
856    /*  307 */ SyscallDesc("unused#307", unimplementedFunc),
857    /*  308 */ SyscallDesc("unused#308", unimplementedFunc),
858    /*  309 */ SyscallDesc("unused#309", unimplementedFunc),
859    /*  310 */ SyscallDesc("unused#310", unimplementedFunc),
860    /*  311 */ SyscallDesc("unused#311", unimplementedFunc),
861    /*  312 */ SyscallDesc("unused#312", unimplementedFunc),
862    /*  313 */ SyscallDesc("unused#313", unimplementedFunc),
863    /*  314 */ SyscallDesc("unused#314", unimplementedFunc),
864    /*  315 */ SyscallDesc("unused#315", unimplementedFunc),
865    /*  316 */ SyscallDesc("unused#316", unimplementedFunc),
866    /*  317 */ SyscallDesc("unused#317", unimplementedFunc),
867    /*  318 */ SyscallDesc("unused#318", unimplementedFunc),
868    /*  319 */ SyscallDesc("unused#319", unimplementedFunc),
869    /*  320 */ SyscallDesc("unused#320", unimplementedFunc),
870    /*  321 */ SyscallDesc("unused#321", unimplementedFunc),
871    /*  322 */ SyscallDesc("unused#322", unimplementedFunc),
872    /*  323 */ SyscallDesc("unused#323", unimplementedFunc),
873    /*  324 */ SyscallDesc("unused#324", unimplementedFunc),
874    /*  325 */ SyscallDesc("unused#325", unimplementedFunc),
875    /*  326 */ SyscallDesc("unused#326", unimplementedFunc),
876    /*  327 */ SyscallDesc("unused#327", unimplementedFunc),
877    /*  328 */ SyscallDesc("unused#328", unimplementedFunc),
878    /*  329 */ SyscallDesc("unused#329", unimplementedFunc),
879    /*  330 */ SyscallDesc("unused#330", unimplementedFunc),
880    /*  331 */ SyscallDesc("unused#331", unimplementedFunc),
881    /*  332 */ SyscallDesc("unused#332", unimplementedFunc),
882    /*  333 */ SyscallDesc("unused#333", unimplementedFunc),
883    /*  334 */ SyscallDesc("unused#334", unimplementedFunc),
884    /*  335 */ SyscallDesc("unused#335", unimplementedFunc),
885    /*  336 */ SyscallDesc("unused#336", unimplementedFunc),
886    /*  337 */ SyscallDesc("unused#337", unimplementedFunc),
887    /*  338 */ SyscallDesc("unused#338", unimplementedFunc),
888    /*  339 */ SyscallDesc("unused#339", unimplementedFunc),
889    /*  340 */ SyscallDesc("unused#340", unimplementedFunc),
890    /*  341 */ SyscallDesc("unused#341", unimplementedFunc),
891    /*  342 */ SyscallDesc("unused#342", unimplementedFunc),
892    /*  343 */ SyscallDesc("unused#343", unimplementedFunc),
893    /*  344 */ SyscallDesc("unused#344", unimplementedFunc),
894    /*  345 */ SyscallDesc("unused#345", unimplementedFunc),
895    /*  346 */ SyscallDesc("unused#346", unimplementedFunc),
896    /*  347 */ SyscallDesc("unused#347", unimplementedFunc),
897    /*  348 */ SyscallDesc("unused#348", unimplementedFunc),
898    /*  349 */ SyscallDesc("unused#349", unimplementedFunc),
899    /*  350 */ SyscallDesc("unused#350", unimplementedFunc),
900    /*  351 */ SyscallDesc("unused#351", unimplementedFunc),
901    /*  352 */ SyscallDesc("unused#352", unimplementedFunc),
902    /*  353 */ SyscallDesc("unused#353", unimplementedFunc),
903    /*  354 */ SyscallDesc("unused#354", unimplementedFunc),
904    /*  355 */ SyscallDesc("unused#355", unimplementedFunc),
905    /*  356 */ SyscallDesc("unused#356", unimplementedFunc),
906    /*  357 */ SyscallDesc("unused#357", unimplementedFunc),
907    /*  358 */ SyscallDesc("unused#358", unimplementedFunc),
908    /*  359 */ SyscallDesc("unused#359", unimplementedFunc),
909    /*  360 */ SyscallDesc("unused#360", unimplementedFunc),
910    /*  361 */ SyscallDesc("unused#361", unimplementedFunc),
911    /*  362 */ SyscallDesc("unused#362", unimplementedFunc),
912    /*  363 */ SyscallDesc("unused#363", unimplementedFunc),
913    /*  364 */ SyscallDesc("unused#364", unimplementedFunc),
914    /*  365 */ SyscallDesc("unused#365", unimplementedFunc),
915    /*  366 */ SyscallDesc("unused#366", unimplementedFunc),
916    /*  367 */ SyscallDesc("unused#367", unimplementedFunc),
917    /*  368 */ SyscallDesc("unused#368", unimplementedFunc),
918    /*  369 */ SyscallDesc("unused#369", unimplementedFunc),
919    /*  370 */ SyscallDesc("unused#370", unimplementedFunc),
920    /*  371 */ SyscallDesc("unused#371", unimplementedFunc),
921    /*  372 */ SyscallDesc("unused#372", unimplementedFunc),
922    /*  373 */ SyscallDesc("unused#373", unimplementedFunc),
923    /*  374 */ SyscallDesc("unused#374", unimplementedFunc),
924    /*  375 */ SyscallDesc("unused#375", unimplementedFunc),
925    /*  376 */ SyscallDesc("unused#376", unimplementedFunc),
926    /*  377 */ SyscallDesc("unused#377", unimplementedFunc),
927    /*  378 */ SyscallDesc("unused#378", unimplementedFunc),
928    /*  379 */ SyscallDesc("unused#379", unimplementedFunc),
929    /*  380 */ SyscallDesc("unused#380", unimplementedFunc),
930    /*  381 */ SyscallDesc("unused#381", unimplementedFunc),
931    /*  382 */ SyscallDesc("unused#382", unimplementedFunc),
932    /*  383 */ SyscallDesc("unused#383", unimplementedFunc),
933    /*  384 */ SyscallDesc("unused#384", unimplementedFunc),
934    /*  385 */ SyscallDesc("unused#385", unimplementedFunc),
935    /*  386 */ SyscallDesc("unused#386", unimplementedFunc),
936    /*  387 */ SyscallDesc("unused#387", unimplementedFunc),
937    /*  388 */ SyscallDesc("unused#388", unimplementedFunc),
938    /*  389 */ SyscallDesc("unused#389", unimplementedFunc),
939    /*  390 */ SyscallDesc("unused#390", unimplementedFunc),
940    /*  391 */ SyscallDesc("unused#391", unimplementedFunc),
941    /*  392 */ SyscallDesc("unused#392", unimplementedFunc),
942    /*  393 */ SyscallDesc("unused#393", unimplementedFunc),
943    /*  394 */ SyscallDesc("unused#394", unimplementedFunc),
944    /*  395 */ SyscallDesc("unused#395", unimplementedFunc),
945    /*  396 */ SyscallDesc("unused#396", unimplementedFunc),
946    /*  397 */ SyscallDesc("unused#397", unimplementedFunc),
947    /*  398 */ SyscallDesc("unused#398", unimplementedFunc),
948    /*  399 */ SyscallDesc("unused#399", unimplementedFunc),
949    /*  400 */ SyscallDesc("unused#400", unimplementedFunc),
950    /*  401 */ SyscallDesc("unused#401", unimplementedFunc),
951    /*  402 */ SyscallDesc("unused#402", unimplementedFunc),
952    /*  403 */ SyscallDesc("unused#403", unimplementedFunc),
953    /*  404 */ SyscallDesc("unused#404", unimplementedFunc),
954    /*  405 */ SyscallDesc("unused#405", unimplementedFunc),
955    /*  406 */ SyscallDesc("unused#406", unimplementedFunc),
956    /*  407 */ SyscallDesc("unused#407", unimplementedFunc),
957    /*  408 */ SyscallDesc("unused#408", unimplementedFunc),
958    /*  409 */ SyscallDesc("unused#409", unimplementedFunc),
959    /*  410 */ SyscallDesc("unused#410", unimplementedFunc),
960    /*  411 */ SyscallDesc("unused#411", unimplementedFunc),
961    /*  412 */ SyscallDesc("unused#412", unimplementedFunc),
962    /*  413 */ SyscallDesc("unused#413", unimplementedFunc),
963    /*  414 */ SyscallDesc("unused#414", unimplementedFunc),
964    /*  415 */ SyscallDesc("unused#415", unimplementedFunc),
965    /*  416 */ SyscallDesc("unused#416", unimplementedFunc),
966    /*  417 */ SyscallDesc("unused#417", unimplementedFunc),
967    /*  418 */ SyscallDesc("unused#418", unimplementedFunc),
968    /*  419 */ SyscallDesc("unused#419", unimplementedFunc),
969    /*  420 */ SyscallDesc("unused#420", unimplementedFunc),
970    /*  421 */ SyscallDesc("unused#421", unimplementedFunc),
971    /*  422 */ SyscallDesc("unused#422", unimplementedFunc),
972    /*  423 */ SyscallDesc("unused#423", unimplementedFunc),
973    /*  424 */ SyscallDesc("unused#424", unimplementedFunc),
974    /*  425 */ SyscallDesc("unused#425", unimplementedFunc),
975    /*  426 */ SyscallDesc("unused#426", unimplementedFunc),
976    /*  427 */ SyscallDesc("unused#427", unimplementedFunc),
977    /*  428 */ SyscallDesc("unused#428", unimplementedFunc),
978    /*  429 */ SyscallDesc("unused#429", unimplementedFunc),
979    /*  430 */ SyscallDesc("unused#430", unimplementedFunc),
980    /*  431 */ SyscallDesc("unused#431", unimplementedFunc),
981    /*  432 */ SyscallDesc("unused#432", unimplementedFunc),
982    /*  433 */ SyscallDesc("unused#433", unimplementedFunc),
983    /*  434 */ SyscallDesc("unused#434", unimplementedFunc),
984    /*  435 */ SyscallDesc("unused#435", unimplementedFunc),
985    /*  436 */ SyscallDesc("unused#436", unimplementedFunc),
986    /*  437 */ SyscallDesc("unused#437", unimplementedFunc),
987    /*  438 */ SyscallDesc("unused#438", unimplementedFunc),
988    /*  439 */ SyscallDesc("unused#439", unimplementedFunc),
989    /*  440 */ SyscallDesc("unused#440", unimplementedFunc),
990    /*  441 */ SyscallDesc("unused#441", unimplementedFunc),
991    /*  442 */ SyscallDesc("unused#442", unimplementedFunc),
992    /*  443 */ SyscallDesc("unused#443", unimplementedFunc),
993    /*  444 */ SyscallDesc("unused#444", unimplementedFunc),
994    /*  445 */ SyscallDesc("unused#445", unimplementedFunc),
995    /*  446 */ SyscallDesc("unused#446", unimplementedFunc),
996    /*  447 */ SyscallDesc("unused#447", unimplementedFunc),
997    /*  448 */ SyscallDesc("unused#448", unimplementedFunc),
998    /*  449 */ SyscallDesc("unused#449", unimplementedFunc),
999    /*  450 */ SyscallDesc("unused#450", unimplementedFunc),
1000    /*  451 */ SyscallDesc("unused#451", unimplementedFunc),
1001    /*  452 */ SyscallDesc("unused#452", unimplementedFunc),
1002    /*  453 */ SyscallDesc("unused#453", unimplementedFunc),
1003    /*  454 */ SyscallDesc("unused#454", unimplementedFunc),
1004    /*  455 */ SyscallDesc("unused#455", unimplementedFunc),
1005    /*  456 */ SyscallDesc("unused#456", unimplementedFunc),
1006    /*  457 */ SyscallDesc("unused#457", unimplementedFunc),
1007    /*  458 */ SyscallDesc("unused#458", unimplementedFunc),
1008    /*  459 */ SyscallDesc("unused#459", unimplementedFunc),
1009    /*  460 */ SyscallDesc("unused#460", unimplementedFunc),
1010    /*  461 */ SyscallDesc("unused#461", unimplementedFunc),
1011    /*  462 */ SyscallDesc("unused#462", unimplementedFunc),
1012    /*  463 */ SyscallDesc("unused#463", unimplementedFunc),
1013    /*  464 */ SyscallDesc("unused#464", unimplementedFunc),
1014    /*  465 */ SyscallDesc("unused#465", unimplementedFunc),
1015    /*  466 */ SyscallDesc("unused#466", unimplementedFunc),
1016    /*  467 */ SyscallDesc("unused#467", unimplementedFunc),
1017    /*  468 */ SyscallDesc("unused#468", unimplementedFunc),
1018    /*  469 */ SyscallDesc("unused#469", unimplementedFunc),
1019    /*  470 */ SyscallDesc("unused#470", unimplementedFunc),
1020    /*  471 */ SyscallDesc("unused#471", unimplementedFunc),
1021    /*  472 */ SyscallDesc("unused#472", unimplementedFunc),
1022    /*  473 */ SyscallDesc("unused#473", unimplementedFunc),
1023    /*  474 */ SyscallDesc("unused#474", unimplementedFunc),
1024    /*  475 */ SyscallDesc("unused#475", unimplementedFunc),
1025    /*  476 */ SyscallDesc("unused#476", unimplementedFunc),
1026    /*  477 */ SyscallDesc("unused#477", unimplementedFunc),
1027    /*  478 */ SyscallDesc("unused#478", unimplementedFunc),
1028    /*  479 */ SyscallDesc("unused#479", unimplementedFunc),
1029    /*  480 */ SyscallDesc("unused#480", unimplementedFunc),
1030    /*  481 */ SyscallDesc("unused#481", unimplementedFunc),
1031    /*  482 */ SyscallDesc("unused#482", unimplementedFunc),
1032    /*  483 */ SyscallDesc("unused#483", unimplementedFunc),
1033    /*  484 */ SyscallDesc("unused#484", unimplementedFunc),
1034    /*  485 */ SyscallDesc("unused#485", unimplementedFunc),
1035    /*  486 */ SyscallDesc("unused#486", unimplementedFunc),
1036    /*  487 */ SyscallDesc("unused#487", unimplementedFunc),
1037    /*  488 */ SyscallDesc("unused#488", unimplementedFunc),
1038    /*  489 */ SyscallDesc("unused#489", unimplementedFunc),
1039    /*  490 */ SyscallDesc("unused#490", unimplementedFunc),
1040    /*  491 */ SyscallDesc("unused#491", unimplementedFunc),
1041    /*  492 */ SyscallDesc("unused#492", unimplementedFunc),
1042    /*  493 */ SyscallDesc("unused#493", unimplementedFunc),
1043    /*  494 */ SyscallDesc("unused#494", unimplementedFunc),
1044    /*  495 */ SyscallDesc("unused#495", unimplementedFunc),
1045    /*  496 */ SyscallDesc("unused#496", unimplementedFunc),
1046    /*  497 */ SyscallDesc("unused#497", unimplementedFunc),
1047    /*  498 */ SyscallDesc("unused#498", unimplementedFunc),
1048    /*  499 */ SyscallDesc("unused#499", unimplementedFunc),
1049    /*  500 */ SyscallDesc("unused#500", unimplementedFunc),
1050    /*  501 */ SyscallDesc("unused#501", unimplementedFunc),
1051    /*  502 */ SyscallDesc("unused#502", unimplementedFunc),
1052    /*  503 */ SyscallDesc("unused#503", unimplementedFunc),
1053    /*  504 */ SyscallDesc("unused#504", unimplementedFunc),
1054    /*  505 */ SyscallDesc("unused#505", unimplementedFunc),
1055    /*  506 */ SyscallDesc("unused#506", unimplementedFunc),
1056    /*  507 */ SyscallDesc("unused#507", unimplementedFunc),
1057    /*  508 */ SyscallDesc("unused#508", unimplementedFunc),
1058    /*  509 */ SyscallDesc("unused#509", unimplementedFunc),
1059    /*  510 */ SyscallDesc("unused#510", unimplementedFunc),
1060    /*  511 */ SyscallDesc("unused#511", unimplementedFunc),
1061    /*  512 */ SyscallDesc("unused#512", unimplementedFunc),
1062    /*  513 */ SyscallDesc("unused#513", unimplementedFunc),
1063    /*  514 */ SyscallDesc("unused#514", unimplementedFunc),
1064    /*  515 */ SyscallDesc("unused#515", unimplementedFunc),
1065    /*  516 */ SyscallDesc("unused#516", unimplementedFunc),
1066    /*  517 */ SyscallDesc("unused#517", unimplementedFunc),
1067    /*  518 */ SyscallDesc("unused#518", unimplementedFunc),
1068    /*  519 */ SyscallDesc("unused#519", unimplementedFunc),
1069    /*  520 */ SyscallDesc("unused#520", unimplementedFunc),
1070    /*  521 */ SyscallDesc("unused#521", unimplementedFunc),
1071    /*  522 */ SyscallDesc("unused#522", unimplementedFunc),
1072    /*  523 */ SyscallDesc("unused#523", unimplementedFunc),
1073    /*  524 */ SyscallDesc("unused#524", unimplementedFunc),
1074    /*  525 */ SyscallDesc("unused#525", unimplementedFunc),
1075    /*  526 */ SyscallDesc("unused#526", unimplementedFunc),
1076    /*  527 */ SyscallDesc("unused#527", unimplementedFunc),
1077    /*  528 */ SyscallDesc("unused#528", unimplementedFunc),
1078    /*  529 */ SyscallDesc("unused#529", unimplementedFunc),
1079    /*  530 */ SyscallDesc("unused#530", unimplementedFunc),
1080    /*  531 */ SyscallDesc("unused#531", unimplementedFunc),
1081    /*  532 */ SyscallDesc("unused#532", unimplementedFunc),
1082    /*  533 */ SyscallDesc("unused#533", unimplementedFunc),
1083    /*  534 */ SyscallDesc("unused#534", unimplementedFunc),
1084    /*  535 */ SyscallDesc("unused#535", unimplementedFunc),
1085    /*  536 */ SyscallDesc("unused#536", unimplementedFunc),
1086    /*  537 */ SyscallDesc("unused#537", unimplementedFunc),
1087    /*  538 */ SyscallDesc("unused#538", unimplementedFunc),
1088    /*  539 */ SyscallDesc("unused#539", unimplementedFunc),
1089    /*  540 */ SyscallDesc("unused#540", unimplementedFunc),
1090    /*  541 */ SyscallDesc("unused#541", unimplementedFunc),
1091    /*  542 */ SyscallDesc("unused#542", unimplementedFunc),
1092    /*  543 */ SyscallDesc("unused#543", unimplementedFunc),
1093    /*  544 */ SyscallDesc("unused#544", unimplementedFunc),
1094    /*  545 */ SyscallDesc("unused#545", unimplementedFunc),
1095    /*  546 */ SyscallDesc("unused#546", unimplementedFunc),
1096    /*  547 */ SyscallDesc("unused#547", unimplementedFunc),
1097    /*  548 */ SyscallDesc("unused#548", unimplementedFunc),
1098    /*  549 */ SyscallDesc("unused#549", unimplementedFunc),
1099    /*  550 */ SyscallDesc("unused#550", unimplementedFunc),
1100    /*  551 */ SyscallDesc("unused#551", unimplementedFunc),
1101    /*  552 */ SyscallDesc("unused#552", unimplementedFunc),
1102    /*  553 */ SyscallDesc("unused#553", unimplementedFunc),
1103    /*  554 */ SyscallDesc("unused#554", unimplementedFunc),
1104    /*  555 */ SyscallDesc("unused#555", unimplementedFunc),
1105    /*  556 */ SyscallDesc("unused#556", unimplementedFunc),
1106    /*  557 */ SyscallDesc("unused#557", unimplementedFunc),
1107    /*  558 */ SyscallDesc("unused#558", unimplementedFunc),
1108    /*  559 */ SyscallDesc("unused#559", unimplementedFunc),
1109    /*  560 */ SyscallDesc("unused#560", unimplementedFunc),
1110    /*  561 */ SyscallDesc("unused#561", unimplementedFunc),
1111    /*  562 */ SyscallDesc("unused#562", unimplementedFunc),
1112    /*  563 */ SyscallDesc("unused#563", unimplementedFunc),
1113    /*  564 */ SyscallDesc("unused#564", unimplementedFunc),
1114    /*  565 */ SyscallDesc("unused#565", unimplementedFunc),
1115    /*  566 */ SyscallDesc("unused#566", unimplementedFunc),
1116    /*  567 */ SyscallDesc("unused#567", unimplementedFunc),
1117    /*  568 */ SyscallDesc("unused#568", unimplementedFunc),
1118    /*  569 */ SyscallDesc("unused#569", unimplementedFunc),
1119    /*  570 */ SyscallDesc("unused#570", unimplementedFunc),
1120    /*  571 */ SyscallDesc("unused#571", unimplementedFunc),
1121    /*  572 */ SyscallDesc("unused#572", unimplementedFunc),
1122    /*  573 */ SyscallDesc("unused#573", unimplementedFunc),
1123    /*  574 */ SyscallDesc("unused#574", unimplementedFunc),
1124    /*  575 */ SyscallDesc("unused#575", unimplementedFunc),
1125    /*  576 */ SyscallDesc("unused#576", unimplementedFunc),
1126    /*  577 */ SyscallDesc("unused#577", unimplementedFunc),
1127    /*  578 */ SyscallDesc("unused#578", unimplementedFunc),
1128    /*  579 */ SyscallDesc("unused#579", unimplementedFunc),
1129    /*  580 */ SyscallDesc("unused#580", unimplementedFunc),
1130    /*  581 */ SyscallDesc("unused#581", unimplementedFunc),
1131    /*  582 */ SyscallDesc("unused#582", unimplementedFunc),
1132    /*  583 */ SyscallDesc("unused#583", unimplementedFunc),
1133    /*  584 */ SyscallDesc("unused#584", unimplementedFunc),
1134    /*  585 */ SyscallDesc("unused#585", unimplementedFunc),
1135    /*  586 */ SyscallDesc("unused#586", unimplementedFunc),
1136    /*  587 */ SyscallDesc("unused#587", unimplementedFunc),
1137    /*  588 */ SyscallDesc("unused#588", unimplementedFunc),
1138    /*  589 */ SyscallDesc("unused#589", unimplementedFunc),
1139    /*  590 */ SyscallDesc("unused#590", unimplementedFunc),
1140    /*  591 */ SyscallDesc("unused#591", unimplementedFunc),
1141    /*  592 */ SyscallDesc("unused#592", unimplementedFunc),
1142    /*  593 */ SyscallDesc("unused#593", unimplementedFunc),
1143    /*  594 */ SyscallDesc("unused#594", unimplementedFunc),
1144    /*  595 */ SyscallDesc("unused#595", unimplementedFunc),
1145    /*  596 */ SyscallDesc("unused#596", unimplementedFunc),
1146    /*  597 */ SyscallDesc("unused#597", unimplementedFunc),
1147    /*  598 */ SyscallDesc("unused#598", unimplementedFunc),
1148    /*  599 */ SyscallDesc("unused#599", unimplementedFunc),
1149    /*  600 */ SyscallDesc("unused#600", unimplementedFunc),
1150    /*  601 */ SyscallDesc("unused#601", unimplementedFunc),
1151    /*  602 */ SyscallDesc("unused#602", unimplementedFunc),
1152    /*  603 */ SyscallDesc("unused#603", unimplementedFunc),
1153    /*  604 */ SyscallDesc("unused#604", unimplementedFunc),
1154    /*  605 */ SyscallDesc("unused#605", unimplementedFunc),
1155    /*  606 */ SyscallDesc("unused#606", unimplementedFunc),
1156    /*  607 */ SyscallDesc("unused#607", unimplementedFunc),
1157    /*  608 */ SyscallDesc("unused#608", unimplementedFunc),
1158    /*  609 */ SyscallDesc("unused#609", unimplementedFunc),
1159    /*  610 */ SyscallDesc("unused#610", unimplementedFunc),
1160    /*  611 */ SyscallDesc("unused#611", unimplementedFunc),
1161    /*  612 */ SyscallDesc("unused#612", unimplementedFunc),
1162    /*  613 */ SyscallDesc("unused#613", unimplementedFunc),
1163    /*  614 */ SyscallDesc("unused#614", unimplementedFunc),
1164    /*  615 */ SyscallDesc("unused#615", unimplementedFunc),
1165    /*  616 */ SyscallDesc("unused#616", unimplementedFunc),
1166    /*  617 */ SyscallDesc("unused#617", unimplementedFunc),
1167    /*  618 */ SyscallDesc("unused#618", unimplementedFunc),
1168    /*  619 */ SyscallDesc("unused#619", unimplementedFunc),
1169    /*  620 */ SyscallDesc("unused#620", unimplementedFunc),
1170    /*  621 */ SyscallDesc("unused#621", unimplementedFunc),
1171    /*  622 */ SyscallDesc("unused#622", unimplementedFunc),
1172    /*  623 */ SyscallDesc("unused#623", unimplementedFunc),
1173    /*  624 */ SyscallDesc("unused#624", unimplementedFunc),
1174    /*  625 */ SyscallDesc("unused#625", unimplementedFunc),
1175    /*  626 */ SyscallDesc("unused#626", unimplementedFunc),
1176    /*  627 */ SyscallDesc("unused#627", unimplementedFunc),
1177    /*  628 */ SyscallDesc("unused#628", unimplementedFunc),
1178    /*  629 */ SyscallDesc("unused#629", unimplementedFunc),
1179    /*  630 */ SyscallDesc("unused#630", unimplementedFunc),
1180    /*  631 */ SyscallDesc("unused#631", unimplementedFunc),
1181    /*  632 */ SyscallDesc("unused#632", unimplementedFunc),
1182    /*  633 */ SyscallDesc("unused#633", unimplementedFunc),
1183    /*  634 */ SyscallDesc("unused#634", unimplementedFunc),
1184    /*  635 */ SyscallDesc("unused#635", unimplementedFunc),
1185    /*  636 */ SyscallDesc("unused#636", unimplementedFunc),
1186    /*  637 */ SyscallDesc("unused#637", unimplementedFunc),
1187    /*  638 */ SyscallDesc("unused#638", unimplementedFunc),
1188    /*  639 */ SyscallDesc("unused#639", unimplementedFunc),
1189    /*  640 */ SyscallDesc("unused#640", unimplementedFunc),
1190    /*  641 */ SyscallDesc("unused#641", unimplementedFunc),
1191    /*  642 */ SyscallDesc("unused#642", unimplementedFunc),
1192    /*  643 */ SyscallDesc("unused#643", unimplementedFunc),
1193    /*  644 */ SyscallDesc("unused#644", unimplementedFunc),
1194    /*  645 */ SyscallDesc("unused#645", unimplementedFunc),
1195    /*  646 */ SyscallDesc("unused#646", unimplementedFunc),
1196    /*  647 */ SyscallDesc("unused#647", unimplementedFunc),
1197    /*  648 */ SyscallDesc("unused#648", unimplementedFunc),
1198    /*  649 */ SyscallDesc("unused#649", unimplementedFunc),
1199    /*  650 */ SyscallDesc("unused#650", unimplementedFunc),
1200    /*  651 */ SyscallDesc("unused#651", unimplementedFunc),
1201    /*  652 */ SyscallDesc("unused#652", unimplementedFunc),
1202    /*  653 */ SyscallDesc("unused#653", unimplementedFunc),
1203    /*  654 */ SyscallDesc("unused#654", unimplementedFunc),
1204    /*  655 */ SyscallDesc("unused#655", unimplementedFunc),
1205    /*  656 */ SyscallDesc("unused#656", unimplementedFunc),
1206    /*  657 */ SyscallDesc("unused#657", unimplementedFunc),
1207    /*  658 */ SyscallDesc("unused#658", unimplementedFunc),
1208    /*  659 */ SyscallDesc("unused#659", unimplementedFunc),
1209    /*  660 */ SyscallDesc("unused#660", unimplementedFunc),
1210    /*  661 */ SyscallDesc("unused#661", unimplementedFunc),
1211    /*  662 */ SyscallDesc("unused#662", unimplementedFunc),
1212    /*  663 */ SyscallDesc("unused#663", unimplementedFunc),
1213    /*  664 */ SyscallDesc("unused#664", unimplementedFunc),
1214    /*  665 */ SyscallDesc("unused#665", unimplementedFunc),
1215    /*  666 */ SyscallDesc("unused#666", unimplementedFunc),
1216    /*  667 */ SyscallDesc("unused#667", unimplementedFunc),
1217    /*  668 */ SyscallDesc("unused#668", unimplementedFunc),
1218    /*  669 */ SyscallDesc("unused#669", unimplementedFunc),
1219    /*  670 */ SyscallDesc("unused#670", unimplementedFunc),
1220    /*  671 */ SyscallDesc("unused#671", unimplementedFunc),
1221    /*  672 */ SyscallDesc("unused#672", unimplementedFunc),
1222    /*  673 */ SyscallDesc("unused#673", unimplementedFunc),
1223    /*  674 */ SyscallDesc("unused#674", unimplementedFunc),
1224    /*  675 */ SyscallDesc("unused#675", unimplementedFunc),
1225    /*  676 */ SyscallDesc("unused#676", unimplementedFunc),
1226    /*  677 */ SyscallDesc("unused#677", unimplementedFunc),
1227    /*  678 */ SyscallDesc("unused#678", unimplementedFunc),
1228    /*  679 */ SyscallDesc("unused#679", unimplementedFunc),
1229    /*  680 */ SyscallDesc("unused#680", unimplementedFunc),
1230    /*  681 */ SyscallDesc("unused#681", unimplementedFunc),
1231    /*  682 */ SyscallDesc("unused#682", unimplementedFunc),
1232    /*  683 */ SyscallDesc("unused#683", unimplementedFunc),
1233    /*  684 */ SyscallDesc("unused#684", unimplementedFunc),
1234    /*  685 */ SyscallDesc("unused#685", unimplementedFunc),
1235    /*  686 */ SyscallDesc("unused#686", unimplementedFunc),
1236    /*  687 */ SyscallDesc("unused#687", unimplementedFunc),
1237    /*  688 */ SyscallDesc("unused#688", unimplementedFunc),
1238    /*  689 */ SyscallDesc("unused#689", unimplementedFunc),
1239    /*  690 */ SyscallDesc("unused#690", unimplementedFunc),
1240    /*  691 */ SyscallDesc("unused#691", unimplementedFunc),
1241    /*  692 */ SyscallDesc("unused#692", unimplementedFunc),
1242    /*  693 */ SyscallDesc("unused#693", unimplementedFunc),
1243    /*  694 */ SyscallDesc("unused#694", unimplementedFunc),
1244    /*  695 */ SyscallDesc("unused#695", unimplementedFunc),
1245    /*  696 */ SyscallDesc("unused#696", unimplementedFunc),
1246    /*  697 */ SyscallDesc("unused#697", unimplementedFunc),
1247    /*  698 */ SyscallDesc("unused#698", unimplementedFunc),
1248    /*  699 */ SyscallDesc("unused#699", unimplementedFunc),
1249    /*  700 */ SyscallDesc("unused#700", unimplementedFunc),
1250    /*  701 */ SyscallDesc("unused#701", unimplementedFunc),
1251    /*  702 */ SyscallDesc("unused#702", unimplementedFunc),
1252    /*  703 */ SyscallDesc("unused#703", unimplementedFunc),
1253    /*  704 */ SyscallDesc("unused#704", unimplementedFunc),
1254    /*  705 */ SyscallDesc("unused#705", unimplementedFunc),
1255    /*  706 */ SyscallDesc("unused#706", unimplementedFunc),
1256    /*  707 */ SyscallDesc("unused#707", unimplementedFunc),
1257    /*  708 */ SyscallDesc("unused#708", unimplementedFunc),
1258    /*  709 */ SyscallDesc("unused#709", unimplementedFunc),
1259    /*  710 */ SyscallDesc("unused#710", unimplementedFunc),
1260    /*  711 */ SyscallDesc("unused#711", unimplementedFunc),
1261    /*  712 */ SyscallDesc("unused#712", unimplementedFunc),
1262    /*  713 */ SyscallDesc("unused#713", unimplementedFunc),
1263    /*  714 */ SyscallDesc("unused#714", unimplementedFunc),
1264    /*  715 */ SyscallDesc("unused#715", unimplementedFunc),
1265    /*  716 */ SyscallDesc("unused#716", unimplementedFunc),
1266    /*  717 */ SyscallDesc("unused#717", unimplementedFunc),
1267    /*  718 */ SyscallDesc("unused#718", unimplementedFunc),
1268    /*  719 */ SyscallDesc("unused#719", unimplementedFunc),
1269    /*  720 */ SyscallDesc("unused#720", unimplementedFunc),
1270    /*  721 */ SyscallDesc("unused#721", unimplementedFunc),
1271    /*  722 */ SyscallDesc("unused#722", unimplementedFunc),
1272    /*  723 */ SyscallDesc("unused#723", unimplementedFunc),
1273    /*  724 */ SyscallDesc("unused#724", unimplementedFunc),
1274    /*  725 */ SyscallDesc("unused#725", unimplementedFunc),
1275    /*  726 */ SyscallDesc("unused#726", unimplementedFunc),
1276    /*  727 */ SyscallDesc("unused#727", unimplementedFunc),
1277    /*  728 */ SyscallDesc("unused#728", unimplementedFunc),
1278    /*  729 */ SyscallDesc("unused#729", unimplementedFunc),
1279    /*  730 */ SyscallDesc("unused#730", unimplementedFunc),
1280    /*  731 */ SyscallDesc("unused#731", unimplementedFunc),
1281    /*  732 */ SyscallDesc("unused#732", unimplementedFunc),
1282    /*  733 */ SyscallDesc("unused#733", unimplementedFunc),
1283    /*  734 */ SyscallDesc("unused#734", unimplementedFunc),
1284    /*  735 */ SyscallDesc("unused#735", unimplementedFunc),
1285    /*  736 */ SyscallDesc("unused#736", unimplementedFunc),
1286    /*  737 */ SyscallDesc("unused#737", unimplementedFunc),
1287    /*  738 */ SyscallDesc("unused#738", unimplementedFunc),
1288    /*  739 */ SyscallDesc("unused#739", unimplementedFunc),
1289    /*  740 */ SyscallDesc("unused#740", unimplementedFunc),
1290    /*  741 */ SyscallDesc("unused#741", unimplementedFunc),
1291    /*  742 */ SyscallDesc("unused#742", unimplementedFunc),
1292    /*  743 */ SyscallDesc("unused#743", unimplementedFunc),
1293    /*  744 */ SyscallDesc("unused#744", unimplementedFunc),
1294    /*  745 */ SyscallDesc("unused#745", unimplementedFunc),
1295    /*  746 */ SyscallDesc("unused#746", unimplementedFunc),
1296    /*  747 */ SyscallDesc("unused#747", unimplementedFunc),
1297    /*  748 */ SyscallDesc("unused#748", unimplementedFunc),
1298    /*  749 */ SyscallDesc("unused#749", unimplementedFunc),
1299    /*  750 */ SyscallDesc("unused#750", unimplementedFunc),
1300    /*  751 */ SyscallDesc("unused#751", unimplementedFunc),
1301    /*  752 */ SyscallDesc("unused#752", unimplementedFunc),
1302    /*  753 */ SyscallDesc("unused#753", unimplementedFunc),
1303    /*  754 */ SyscallDesc("unused#754", unimplementedFunc),
1304    /*  755 */ SyscallDesc("unused#755", unimplementedFunc),
1305    /*  756 */ SyscallDesc("unused#756", unimplementedFunc),
1306    /*  757 */ SyscallDesc("unused#757", unimplementedFunc),
1307    /*  758 */ SyscallDesc("unused#758", unimplementedFunc),
1308    /*  759 */ SyscallDesc("unused#759", unimplementedFunc),
1309    /*  760 */ SyscallDesc("unused#760", unimplementedFunc),
1310    /*  761 */ SyscallDesc("unused#761", unimplementedFunc),
1311    /*  762 */ SyscallDesc("unused#762", unimplementedFunc),
1312    /*  763 */ SyscallDesc("unused#763", unimplementedFunc),
1313    /*  764 */ SyscallDesc("unused#764", unimplementedFunc),
1314    /*  765 */ SyscallDesc("unused#765", unimplementedFunc),
1315    /*  766 */ SyscallDesc("unused#766", unimplementedFunc),
1316    /*  767 */ SyscallDesc("unused#767", unimplementedFunc),
1317    /*  768 */ SyscallDesc("unused#768", unimplementedFunc),
1318    /*  769 */ SyscallDesc("unused#769", unimplementedFunc),
1319    /*  770 */ SyscallDesc("unused#770", unimplementedFunc),
1320    /*  771 */ SyscallDesc("unused#771", unimplementedFunc),
1321    /*  772 */ SyscallDesc("unused#772", unimplementedFunc),
1322    /*  773 */ SyscallDesc("unused#773", unimplementedFunc),
1323    /*  774 */ SyscallDesc("unused#774", unimplementedFunc),
1324    /*  775 */ SyscallDesc("unused#775", unimplementedFunc),
1325    /*  776 */ SyscallDesc("unused#776", unimplementedFunc),
1326    /*  777 */ SyscallDesc("unused#777", unimplementedFunc),
1327    /*  778 */ SyscallDesc("unused#778", unimplementedFunc),
1328    /*  779 */ SyscallDesc("unused#779", unimplementedFunc),
1329    /*  780 */ SyscallDesc("unused#780", unimplementedFunc),
1330    /*  781 */ SyscallDesc("unused#781", unimplementedFunc),
1331    /*  782 */ SyscallDesc("unused#782", unimplementedFunc),
1332    /*  783 */ SyscallDesc("unused#783", unimplementedFunc),
1333    /*  784 */ SyscallDesc("unused#784", unimplementedFunc),
1334    /*  785 */ SyscallDesc("unused#785", unimplementedFunc),
1335    /*  786 */ SyscallDesc("unused#786", unimplementedFunc),
1336    /*  787 */ SyscallDesc("unused#787", unimplementedFunc),
1337    /*  788 */ SyscallDesc("unused#788", unimplementedFunc),
1338    /*  789 */ SyscallDesc("unused#789", unimplementedFunc),
1339    /*  790 */ SyscallDesc("unused#790", unimplementedFunc),
1340    /*  791 */ SyscallDesc("unused#791", unimplementedFunc),
1341    /*  792 */ SyscallDesc("unused#792", unimplementedFunc),
1342    /*  793 */ SyscallDesc("unused#793", unimplementedFunc),
1343    /*  794 */ SyscallDesc("unused#794", unimplementedFunc),
1344    /*  795 */ SyscallDesc("unused#795", unimplementedFunc),
1345    /*  796 */ SyscallDesc("unused#796", unimplementedFunc),
1346    /*  797 */ SyscallDesc("unused#797", unimplementedFunc),
1347    /*  798 */ SyscallDesc("unused#798", unimplementedFunc),
1348    /*  799 */ SyscallDesc("unused#799", unimplementedFunc),
1349    /*  800 */ SyscallDesc("unused#800", unimplementedFunc),
1350    /*  801 */ SyscallDesc("unused#801", unimplementedFunc),
1351    /*  802 */ SyscallDesc("unused#802", unimplementedFunc),
1352    /*  803 */ SyscallDesc("unused#803", unimplementedFunc),
1353    /*  804 */ SyscallDesc("unused#804", unimplementedFunc),
1354    /*  805 */ SyscallDesc("unused#805", unimplementedFunc),
1355    /*  806 */ SyscallDesc("unused#806", unimplementedFunc),
1356    /*  807 */ SyscallDesc("unused#807", unimplementedFunc),
1357    /*  808 */ SyscallDesc("unused#808", unimplementedFunc),
1358    /*  809 */ SyscallDesc("unused#809", unimplementedFunc),
1359    /*  810 */ SyscallDesc("unused#810", unimplementedFunc),
1360    /*  811 */ SyscallDesc("unused#811", unimplementedFunc),
1361    /*  812 */ SyscallDesc("unused#812", unimplementedFunc),
1362    /*  813 */ SyscallDesc("unused#813", unimplementedFunc),
1363    /*  814 */ SyscallDesc("unused#814", unimplementedFunc),
1364    /*  815 */ SyscallDesc("unused#815", unimplementedFunc),
1365    /*  816 */ SyscallDesc("unused#816", unimplementedFunc),
1366    /*  817 */ SyscallDesc("unused#817", unimplementedFunc),
1367    /*  818 */ SyscallDesc("unused#818", unimplementedFunc),
1368    /*  819 */ SyscallDesc("unused#819", unimplementedFunc),
1369    /*  820 */ SyscallDesc("unused#820", unimplementedFunc),
1370    /*  821 */ SyscallDesc("unused#821", unimplementedFunc),
1371    /*  822 */ SyscallDesc("unused#822", unimplementedFunc),
1372    /*  823 */ SyscallDesc("unused#823", unimplementedFunc),
1373    /*  824 */ SyscallDesc("unused#824", unimplementedFunc),
1374    /*  825 */ SyscallDesc("unused#825", unimplementedFunc),
1375    /*  826 */ SyscallDesc("unused#826", unimplementedFunc),
1376    /*  827 */ SyscallDesc("unused#827", unimplementedFunc),
1377    /*  828 */ SyscallDesc("unused#828", unimplementedFunc),
1378    /*  829 */ SyscallDesc("unused#829", unimplementedFunc),
1379    /*  830 */ SyscallDesc("unused#830", unimplementedFunc),
1380    /*  831 */ SyscallDesc("unused#831", unimplementedFunc),
1381    /*  832 */ SyscallDesc("unused#832", unimplementedFunc),
1382    /*  833 */ SyscallDesc("unused#833", unimplementedFunc),
1383    /*  834 */ SyscallDesc("unused#834", unimplementedFunc),
1384    /*  835 */ SyscallDesc("unused#835", unimplementedFunc),
1385    /*  836 */ SyscallDesc("unused#836", unimplementedFunc),
1386    /*  837 */ SyscallDesc("unused#837", unimplementedFunc),
1387    /*  838 */ SyscallDesc("unused#838", unimplementedFunc),
1388    /*  839 */ SyscallDesc("unused#839", unimplementedFunc),
1389    /*  840 */ SyscallDesc("unused#840", unimplementedFunc),
1390    /*  841 */ SyscallDesc("unused#841", unimplementedFunc),
1391    /*  842 */ SyscallDesc("unused#842", unimplementedFunc),
1392    /*  843 */ SyscallDesc("unused#843", unimplementedFunc),
1393    /*  844 */ SyscallDesc("unused#844", unimplementedFunc),
1394    /*  845 */ SyscallDesc("unused#845", unimplementedFunc),
1395    /*  846 */ SyscallDesc("unused#846", unimplementedFunc),
1396    /*  847 */ SyscallDesc("unused#847", unimplementedFunc),
1397    /*  848 */ SyscallDesc("unused#848", unimplementedFunc),
1398    /*  849 */ SyscallDesc("unused#849", unimplementedFunc),
1399    /*  850 */ SyscallDesc("unused#850", unimplementedFunc),
1400    /*  851 */ SyscallDesc("unused#851", unimplementedFunc),
1401    /*  852 */ SyscallDesc("unused#852", unimplementedFunc),
1402    /*  853 */ SyscallDesc("unused#853", unimplementedFunc),
1403    /*  854 */ SyscallDesc("unused#854", unimplementedFunc),
1404    /*  855 */ SyscallDesc("unused#855", unimplementedFunc),
1405    /*  856 */ SyscallDesc("unused#856", unimplementedFunc),
1406    /*  857 */ SyscallDesc("unused#857", unimplementedFunc),
1407    /*  858 */ SyscallDesc("unused#858", unimplementedFunc),
1408    /*  859 */ SyscallDesc("unused#859", unimplementedFunc),
1409    /*  860 */ SyscallDesc("unused#860", unimplementedFunc),
1410    /*  861 */ SyscallDesc("unused#861", unimplementedFunc),
1411    /*  862 */ SyscallDesc("unused#862", unimplementedFunc),
1412    /*  863 */ SyscallDesc("unused#863", unimplementedFunc),
1413    /*  864 */ SyscallDesc("unused#864", unimplementedFunc),
1414    /*  865 */ SyscallDesc("unused#865", unimplementedFunc),
1415    /*  866 */ SyscallDesc("unused#866", unimplementedFunc),
1416    /*  867 */ SyscallDesc("unused#867", unimplementedFunc),
1417    /*  868 */ SyscallDesc("unused#868", unimplementedFunc),
1418    /*  869 */ SyscallDesc("unused#869", unimplementedFunc),
1419    /*  870 */ SyscallDesc("unused#870", unimplementedFunc),
1420    /*  871 */ SyscallDesc("unused#871", unimplementedFunc),
1421    /*  872 */ SyscallDesc("unused#872", unimplementedFunc),
1422    /*  873 */ SyscallDesc("unused#873", unimplementedFunc),
1423    /*  874 */ SyscallDesc("unused#874", unimplementedFunc),
1424    /*  875 */ SyscallDesc("unused#875", unimplementedFunc),
1425    /*  876 */ SyscallDesc("unused#876", unimplementedFunc),
1426    /*  877 */ SyscallDesc("unused#877", unimplementedFunc),
1427    /*  878 */ SyscallDesc("unused#878", unimplementedFunc),
1428    /*  879 */ SyscallDesc("unused#879", unimplementedFunc),
1429    /*  880 */ SyscallDesc("unused#880", unimplementedFunc),
1430    /*  881 */ SyscallDesc("unused#881", unimplementedFunc),
1431    /*  882 */ SyscallDesc("unused#882", unimplementedFunc),
1432    /*  883 */ SyscallDesc("unused#883", unimplementedFunc),
1433    /*  884 */ SyscallDesc("unused#884", unimplementedFunc),
1434    /*  885 */ SyscallDesc("unused#885", unimplementedFunc),
1435    /*  886 */ SyscallDesc("unused#886", unimplementedFunc),
1436    /*  887 */ SyscallDesc("unused#887", unimplementedFunc),
1437    /*  888 */ SyscallDesc("unused#888", unimplementedFunc),
1438    /*  889 */ SyscallDesc("unused#889", unimplementedFunc),
1439    /*  890 */ SyscallDesc("unused#890", unimplementedFunc),
1440    /*  891 */ SyscallDesc("unused#891", unimplementedFunc),
1441    /*  892 */ SyscallDesc("unused#892", unimplementedFunc),
1442    /*  893 */ SyscallDesc("unused#893", unimplementedFunc),
1443    /*  894 */ SyscallDesc("unused#894", unimplementedFunc),
1444    /*  895 */ SyscallDesc("unused#895", unimplementedFunc),
1445    /*  896 */ SyscallDesc("unused#896", unimplementedFunc),
1446    /*  897 */ SyscallDesc("unused#897", unimplementedFunc),
1447    /*  898 */ SyscallDesc("unused#898", unimplementedFunc),
1448    /*  899 */ SyscallDesc("unused#899", unimplementedFunc),
1449    /*  900 */ SyscallDesc("unused#900", unimplementedFunc),
1450    /*  901 */ SyscallDesc("unused#901", unimplementedFunc),
1451    /*  902 */ SyscallDesc("unused#902", unimplementedFunc),
1452    /*  903 */ SyscallDesc("unused#903", unimplementedFunc),
1453    /*  904 */ SyscallDesc("unused#904", unimplementedFunc),
1454    /*  905 */ SyscallDesc("unused#905", unimplementedFunc),
1455    /*  906 */ SyscallDesc("unused#906", unimplementedFunc),
1456    /*  907 */ SyscallDesc("unused#907", unimplementedFunc),
1457    /*  908 */ SyscallDesc("unused#908", unimplementedFunc),
1458    /*  909 */ SyscallDesc("unused#909", unimplementedFunc),
1459    /*  910 */ SyscallDesc("unused#910", unimplementedFunc),
1460    /*  911 */ SyscallDesc("unused#911", unimplementedFunc),
1461    /*  912 */ SyscallDesc("unused#912", unimplementedFunc),
1462    /*  913 */ SyscallDesc("unused#913", unimplementedFunc),
1463    /*  914 */ SyscallDesc("unused#914", unimplementedFunc),
1464    /*  915 */ SyscallDesc("unused#915", unimplementedFunc),
1465    /*  916 */ SyscallDesc("unused#916", unimplementedFunc),
1466    /*  917 */ SyscallDesc("unused#917", unimplementedFunc),
1467    /*  918 */ SyscallDesc("unused#918", unimplementedFunc),
1468    /*  919 */ SyscallDesc("unused#919", unimplementedFunc),
1469    /*  920 */ SyscallDesc("unused#920", unimplementedFunc),
1470    /*  921 */ SyscallDesc("unused#921", unimplementedFunc),
1471    /*  922 */ SyscallDesc("unused#922", unimplementedFunc),
1472    /*  923 */ SyscallDesc("unused#923", unimplementedFunc),
1473    /*  924 */ SyscallDesc("unused#924", unimplementedFunc),
1474    /*  925 */ SyscallDesc("unused#925", unimplementedFunc),
1475    /*  926 */ SyscallDesc("unused#926", unimplementedFunc),
1476    /*  927 */ SyscallDesc("unused#927", unimplementedFunc),
1477    /*  928 */ SyscallDesc("unused#928", unimplementedFunc),
1478    /*  929 */ SyscallDesc("unused#929", unimplementedFunc),
1479    /*  930 */ SyscallDesc("unused#930", unimplementedFunc),
1480    /*  931 */ SyscallDesc("unused#931", unimplementedFunc),
1481    /*  932 */ SyscallDesc("unused#932", unimplementedFunc),
1482    /*  933 */ SyscallDesc("unused#933", unimplementedFunc),
1483    /*  934 */ SyscallDesc("unused#934", unimplementedFunc),
1484    /*  935 */ SyscallDesc("unused#935", unimplementedFunc),
1485    /*  936 */ SyscallDesc("unused#936", unimplementedFunc),
1486    /*  937 */ SyscallDesc("unused#937", unimplementedFunc),
1487    /*  938 */ SyscallDesc("unused#938", unimplementedFunc),
1488    /*  939 */ SyscallDesc("unused#939", unimplementedFunc),
1489    /*  940 */ SyscallDesc("unused#940", unimplementedFunc),
1490    /*  941 */ SyscallDesc("unused#941", unimplementedFunc),
1491    /*  942 */ SyscallDesc("unused#942", unimplementedFunc),
1492    /*  943 */ SyscallDesc("unused#943", unimplementedFunc),
1493    /*  944 */ SyscallDesc("unused#944", unimplementedFunc),
1494    /*  945 */ SyscallDesc("unused#945", unimplementedFunc),
1495    /*  946 */ SyscallDesc("unused#946", unimplementedFunc),
1496    /*  947 */ SyscallDesc("unused#947", unimplementedFunc),
1497    /*  948 */ SyscallDesc("unused#948", unimplementedFunc),
1498    /*  949 */ SyscallDesc("unused#949", unimplementedFunc),
1499    /*  950 */ SyscallDesc("unused#950", unimplementedFunc),
1500    /*  951 */ SyscallDesc("unused#951", unimplementedFunc),
1501    /*  952 */ SyscallDesc("unused#952", unimplementedFunc),
1502    /*  953 */ SyscallDesc("unused#953", unimplementedFunc),
1503    /*  954 */ SyscallDesc("unused#954", unimplementedFunc),
1504    /*  955 */ SyscallDesc("unused#955", unimplementedFunc),
1505    /*  956 */ SyscallDesc("unused#956", unimplementedFunc),
1506    /*  957 */ SyscallDesc("unused#957", unimplementedFunc),
1507    /*  958 */ SyscallDesc("unused#958", unimplementedFunc),
1508    /*  959 */ SyscallDesc("unused#959", unimplementedFunc),
1509    /*  960 */ SyscallDesc("unused#960", unimplementedFunc),
1510    /*  961 */ SyscallDesc("unused#961", unimplementedFunc),
1511    /*  962 */ SyscallDesc("unused#962", unimplementedFunc),
1512    /*  963 */ SyscallDesc("unused#963", unimplementedFunc),
1513    /*  964 */ SyscallDesc("unused#964", unimplementedFunc),
1514    /*  965 */ SyscallDesc("unused#965", unimplementedFunc),
1515    /*  966 */ SyscallDesc("unused#966", unimplementedFunc),
1516    /*  967 */ SyscallDesc("unused#967", unimplementedFunc),
1517    /*  968 */ SyscallDesc("unused#968", unimplementedFunc),
1518    /*  969 */ SyscallDesc("unused#969", unimplementedFunc),
1519    /*  970 */ SyscallDesc("unused#970", unimplementedFunc),
1520    /*  971 */ SyscallDesc("unused#971", unimplementedFunc),
1521    /*  972 */ SyscallDesc("unused#972", unimplementedFunc),
1522    /*  973 */ SyscallDesc("unused#973", unimplementedFunc),
1523    /*  974 */ SyscallDesc("unused#974", unimplementedFunc),
1524    /*  975 */ SyscallDesc("unused#975", unimplementedFunc),
1525    /*  976 */ SyscallDesc("unused#976", unimplementedFunc),
1526    /*  977 */ SyscallDesc("unused#977", unimplementedFunc),
1527    /*  978 */ SyscallDesc("unused#978", unimplementedFunc),
1528    /*  979 */ SyscallDesc("unused#979", unimplementedFunc),
1529    /*  980 */ SyscallDesc("unused#980", unimplementedFunc),
1530    /*  981 */ SyscallDesc("unused#981", unimplementedFunc),
1531    /*  982 */ SyscallDesc("unused#982", unimplementedFunc),
1532    /*  983 */ SyscallDesc("unused#983", unimplementedFunc),
1533    /*  984 */ SyscallDesc("unused#984", unimplementedFunc),
1534    /*  985 */ SyscallDesc("unused#985", unimplementedFunc),
1535    /*  986 */ SyscallDesc("unused#986", unimplementedFunc),
1536    /*  987 */ SyscallDesc("unused#987", unimplementedFunc),
1537    /*  988 */ SyscallDesc("unused#988", unimplementedFunc),
1538    /*  989 */ SyscallDesc("unused#989", unimplementedFunc),
1539    /*  990 */ SyscallDesc("unused#990", unimplementedFunc),
1540    /*  991 */ SyscallDesc("unused#991", unimplementedFunc),
1541    /*  992 */ SyscallDesc("unused#992", unimplementedFunc),
1542    /*  993 */ SyscallDesc("unused#993", unimplementedFunc),
1543    /*  994 */ SyscallDesc("unused#994", unimplementedFunc),
1544    /*  995 */ SyscallDesc("unused#995", unimplementedFunc),
1545    /*  996 */ SyscallDesc("unused#996", unimplementedFunc),
1546    /*  997 */ SyscallDesc("unused#997", unimplementedFunc),
1547    /*  998 */ SyscallDesc("unused#998", unimplementedFunc),
1548    /*  999 */ SyscallDesc("unused#999", unimplementedFunc),
1549    /* 1000 */ SyscallDesc("unused#1000", unimplementedFunc),
1550    /* 1001 */ SyscallDesc("unused#1001", unimplementedFunc),
1551    /* 1002 */ SyscallDesc("unused#1002", unimplementedFunc),
1552    /* 1003 */ SyscallDesc("unused#1003", unimplementedFunc),
1553    /* 1004 */ SyscallDesc("unused#1004", unimplementedFunc),
1554    /* 1005 */ SyscallDesc("unused#1005", unimplementedFunc),
1555    /* 1006 */ SyscallDesc("unused#1006", unimplementedFunc),
1556    /* 1007 */ SyscallDesc("unused#1007", unimplementedFunc),
1557    /* 1008 */ SyscallDesc("unused#1008", unimplementedFunc),
1558    /* 1009 */ SyscallDesc("unused#1009", unimplementedFunc),
1559    /* 1010 */ SyscallDesc("unused#1010", unimplementedFunc),
1560    /* 1011 */ SyscallDesc("unused#1011", unimplementedFunc),
1561    /* 1012 */ SyscallDesc("unused#1012", unimplementedFunc),
1562    /* 1013 */ SyscallDesc("unused#1013", unimplementedFunc),
1563    /* 1014 */ SyscallDesc("unused#1014", unimplementedFunc),
1564    /* 1015 */ SyscallDesc("unused#1015", unimplementedFunc),
1565    /* 1016 */ SyscallDesc("unused#1016", unimplementedFunc),
1566    /* 1017 */ SyscallDesc("unused#1017", unimplementedFunc),
1567    /* 1018 */ SyscallDesc("unused#1018", unimplementedFunc),
1568    /* 1019 */ SyscallDesc("unused#1019", unimplementedFunc),
1569    /* 1020 */ SyscallDesc("unused#1020", unimplementedFunc),
1570    /* 1021 */ SyscallDesc("unused#1021", unimplementedFunc),
1571    /* 1022 */ SyscallDesc("unused#1022", unimplementedFunc),
1572    /* 1023 */ SyscallDesc("unused#1023", unimplementedFunc),
1573    /* 1024 */ SyscallDesc("open", openFunc<ArmLinux64>),
1574    /* 1025 */ SyscallDesc("link", unimplementedFunc),
1575    /* 1026 */ SyscallDesc("unlink", unlinkFunc),
1576    /* 1027 */ SyscallDesc("mknod", unimplementedFunc),
1577    /* 1028 */ SyscallDesc("chmod", chmodFunc<ArmLinux64>),
1578    /* 1029 */ SyscallDesc("chown", unimplementedFunc),
1579    /* 1030 */ SyscallDesc("mkdir", mkdirFunc),
1580    /* 1031 */ SyscallDesc("rmdir", unimplementedFunc),
1581    /* 1032 */ SyscallDesc("lchown", unimplementedFunc),
1582    /* 1033 */ SyscallDesc("access", accessFunc),
1583    /* 1034 */ SyscallDesc("rename", renameFunc),
1584    /* 1035 */ SyscallDesc("readlink", readlinkFunc),
1585    /* 1036 */ SyscallDesc("symlink", unimplementedFunc),
1586    /* 1037 */ SyscallDesc("utimes", unimplementedFunc),
1587    /* 1038 */ SyscallDesc("stat64", stat64Func<ArmLinux64>),
1588    /* 1039 */ SyscallDesc("lstat64", lstat64Func<ArmLinux64>),
1589    /* 1040 */ SyscallDesc("pipe", pipePseudoFunc),
1590    /* 1041 */ SyscallDesc("dup2", unimplementedFunc),
1591    /* 1042 */ SyscallDesc("epoll_create", unimplementedFunc),
1592    /* 1043 */ SyscallDesc("inotify_init", unimplementedFunc),
1593    /* 1044 */ SyscallDesc("eventfd", unimplementedFunc),
1594    /* 1045 */ SyscallDesc("signalfd", unimplementedFunc),
1595    /* 1046 */ SyscallDesc("sendfile", unimplementedFunc),
1596    /* 1047 */ SyscallDesc("ftruncate", ftruncateFunc),
1597    /* 1048 */ SyscallDesc("truncate", truncateFunc),
1598    /* 1049 */ SyscallDesc("stat", statFunc<ArmLinux64>),
1599    /* 1050 */ SyscallDesc("lstat", unimplementedFunc),
1600    /* 1051 */ SyscallDesc("fstat", fstatFunc<ArmLinux64>),
1601    /* 1052 */ SyscallDesc("fcntl", fcntlFunc),
1602    /* 1053 */ SyscallDesc("fadvise64", unimplementedFunc),
1603    /* 1054 */ SyscallDesc("newfstatat", unimplementedFunc),
1604    /* 1055 */ SyscallDesc("fstatfs", unimplementedFunc),
1605    /* 1056 */ SyscallDesc("statfs", unimplementedFunc),
1606    /* 1057 */ SyscallDesc("lseek", lseekFunc),
1607    /* 1058 */ SyscallDesc("mmap", mmapFunc<ArmLinux64>),
1608    /* 1059 */ SyscallDesc("alarm", unimplementedFunc),
1609    /* 1060 */ SyscallDesc("getpgrp", unimplementedFunc),
1610    /* 1061 */ SyscallDesc("pause", unimplementedFunc),
1611    /* 1062 */ SyscallDesc("time", timeFunc<ArmLinux64>),
1612    /* 1063 */ SyscallDesc("utime", unimplementedFunc),
1613    /* 1064 */ SyscallDesc("creat", unimplementedFunc),
1614#if defined(SYS_getdents)
1615    /* 1065 */ SyscallDesc("getdents", getdentsFunc),
1616#else
1617    /* 1065 */ SyscallDesc("getdents", unimplementedFunc),
1618#endif
1619    /* 1066 */ SyscallDesc("futimesat", unimplementedFunc),
1620    /* 1067 */ SyscallDesc("select", unimplementedFunc),
1621    /* 1068 */ SyscallDesc("poll", unimplementedFunc),
1622    /* 1069 */ SyscallDesc("epoll_wait", unimplementedFunc),
1623    /* 1070 */ SyscallDesc("ustat", unimplementedFunc),
1624    /* 1071 */ SyscallDesc("vfork", unimplementedFunc),
1625    /* 1072 */ SyscallDesc("oldwait4", unimplementedFunc),
1626    /* 1073 */ SyscallDesc("recv", unimplementedFunc),
1627    /* 1074 */ SyscallDesc("send", unimplementedFunc),
1628    /* 1075 */ SyscallDesc("bdflush", unimplementedFunc),
1629    /* 1076 */ SyscallDesc("umount", unimplementedFunc),
1630    /* 1077 */ SyscallDesc("uselib", unimplementedFunc),
1631    /* 1078 */ SyscallDesc("_sysctl", unimplementedFunc),
1632    /* 1079 */ SyscallDesc("fork", unimplementedFunc)
1633};
1634
1635static SyscallDesc privSyscallDescs32[] = {
1636    /*  1 */ SyscallDesc("breakpoint", unimplementedFunc),
1637    /*  2 */ SyscallDesc("cacheflush", unimplementedFunc),
1638    /*  3 */ SyscallDesc("usr26", unimplementedFunc),
1639    /*  4 */ SyscallDesc("usr32", unimplementedFunc),
1640    /*  5 */ SyscallDesc("set_tls", setTLSFunc32)
1641};
1642
1643// Indices 1, 3 and 4 are unallocated.
1644static SyscallDesc privSyscallDescs64[] = {
1645    /*  1 */ SyscallDesc("unallocated", unimplementedFunc),
1646    /*  2 */ SyscallDesc("cacheflush", unimplementedFunc),
1647    /*  3 */ SyscallDesc("unallocated", unimplementedFunc),
1648    /*  4 */ SyscallDesc("unallocated", unimplementedFunc),
1649    /*  5 */ SyscallDesc("set_tls", setTLSFunc64)
1650};
1651
1652ArmLinuxProcess32::ArmLinuxProcess32(ProcessParams * params,
1653        ObjectFile *objFile, ObjectFile::Arch _arch)
1654    : ArmProcess32(params, objFile, _arch)
1655{
1656    SyscallTable table;
1657
1658    table.descs = syscallDescs32;
1659    table.size = sizeof(syscallDescs32) / sizeof(SyscallDesc);
1660    table.base = 0;
1661    syscallTables.push_back(table);
1662    table.base = 0x900000;
1663    syscallTables.push_back(table);
1664
1665    table.descs = privSyscallDescs32;
1666    table.size = sizeof(privSyscallDescs32) / sizeof(SyscallDesc);
1667    table.base = 0xf0001;
1668    syscallTables.push_back(table);
1669}
1670
1671ArmLinuxProcess64::ArmLinuxProcess64(ProcessParams * params,
1672        ObjectFile *objFile, ObjectFile::Arch _arch)
1673    : ArmProcess64(params, objFile, _arch)
1674{
1675    SyscallTable table;
1676
1677    table.descs = syscallDescs64;
1678    table.size = sizeof(syscallDescs64) / sizeof(SyscallDesc);
1679    table.base = 0;
1680    syscallTables.push_back(table);
1681    table.base = 0x900000;
1682    syscallTables.push_back(table);
1683
1684    table.descs = privSyscallDescs64;
1685    table.size = sizeof(privSyscallDescs64) / sizeof(SyscallDesc);
1686    table.base = 0x1001;
1687    syscallTables.push_back(table);
1688}
1689
1690const Addr ArmLinuxProcess32::commPage = 0xffff0000;
1691
1692SyscallDesc*
1693ArmLinuxProcessBits::getLinuxDesc(int callnum)
1694{
1695    // Angel SWI syscalls are unsupported in this release
1696    if (callnum == 0x123456)
1697        panic("Attempt to execute an ANGEL_SWI system call (newlib-related)");
1698    for (unsigned i = 0; i < syscallTables.size(); i++) {
1699        SyscallDesc *desc = syscallTables[i].getDesc(callnum);
1700        if (desc)
1701            return desc;
1702    }
1703    return NULL;
1704}
1705
1706SyscallDesc *
1707ArmLinuxProcessBits::SyscallTable::getDesc(int callnum) const
1708{
1709    int offset = callnum - base;
1710    if (offset < 0 || offset >= size)
1711        return NULL;
1712    return &descs[offset];
1713}
1714
1715SyscallDesc*
1716ArmLinuxProcess32::getDesc(int callnum)
1717{
1718    return getLinuxDesc(callnum);
1719}
1720
1721SyscallDesc*
1722ArmLinuxProcess64::getDesc(int callnum)
1723{
1724    return getLinuxDesc(callnum);
1725}
1726
1727void
1728ArmLinuxProcess32::initState()
1729{
1730    ArmProcess32::initState();
1731    allocateMem(commPage, PageBytes);
1732    ThreadContext *tc = system->getThreadContext(contextIds[0]);
1733
1734    uint8_t swiNeg1[] = {
1735        0xff, 0xff, 0xff, 0xef  // swi -1
1736    };
1737
1738    // Fill this page with swi -1 so we'll no if we land in it somewhere.
1739    for (Addr addr = 0; addr < PageBytes; addr += sizeof(swiNeg1)) {
1740        tc->getVirtProxy().writeBlob(commPage + addr,
1741                                     swiNeg1, sizeof(swiNeg1));
1742    }
1743
1744    uint8_t memory_barrier[] =
1745    {
1746        0x5f, 0xf0, 0x7f, 0xf5, // dmb
1747        0x0e, 0xf0, 0xa0, 0xe1  // return
1748    };
1749    tc->getVirtProxy().writeBlob(commPage + 0x0fa0, memory_barrier,
1750                                 sizeof(memory_barrier));
1751
1752    uint8_t cmpxchg[] =
1753    {
1754        0x9f, 0x3f, 0x92, 0xe1,  // ldrex    r3, [r2]
1755        0x00, 0x30, 0x53, 0xe0,  // subs     r3, r3, r0
1756        0x91, 0x3f, 0x82, 0x01,  // strexeq  r3, r1, [r2]
1757        0x01, 0x00, 0x33, 0x03,  // teqeq    r3, #1
1758        0xfa, 0xff, 0xff, 0x0a,  // beq 1b
1759        0x00, 0x00, 0x73, 0xe2,  // rsbs r0, r3, #0
1760        0x5f, 0xf0, 0x7f, 0xf5,  // dmb
1761        0x0e, 0xf0, 0xa0, 0xe1   // return
1762    };
1763    tc->getVirtProxy().writeBlob(commPage + 0x0fc0, cmpxchg, sizeof(cmpxchg));
1764
1765    uint8_t get_tls[] =
1766    {
1767                                // read user read-only thread id register
1768        0x70, 0x0f, 0x1d, 0xee, // mrc p15, 0, r0, c13, c0, 3
1769        0x0e, 0xf0, 0xa0, 0xe1  // return
1770    };
1771    tc->getVirtProxy().writeBlob(commPage + 0x0fe0, get_tls, sizeof(get_tls));
1772}
1773
1774void
1775ArmLinuxProcess64::initState()
1776{
1777    ArmProcess64::initState();
1778    // The 64 bit equivalent of the comm page would be set up here.
1779}
1780