xref: /netbsd-src/sys/compat/linux/arch/arm/syscalls.master (revision a3740e150a4bea0d03e70539dc6fe36956b72c38)
1	$NetBSD: syscalls.master,v 1.82 2024/09/28 19:35:55 christos Exp $
2
3; Derived from sys/compat/linux/arch/*/syscalls.master
4; and from Linux 2.4.12 arch/arm/kernel/calls.S
5
6; NetBSD/arm COMPAT_LINUX system call name/number "master" file.
7; (See syscalls.conf to see what it is processed into.)
8;
9; Fields: number type [type-dependent ...]
10;	number	system call number, must be in order
11;	type	one of STD, OBSOL, UNIMPL, NODEF, NOARGS, or one of
12;		the compatibility options defined in syscalls.conf.
13;
14; types:
15;	STD	always included
16;	OBSOL	obsolete, not included in system
17;	UNIMPL	unimplemented, not included in system
18;	NODEF	included, but don't define the syscall number
19;	NOARGS	included, but don't define the syscall args structure
20;	INDIR	included, but don't define the syscall args structure
21;		and allow it to be "really" varargs.
22;
23; The compat options are defined in the syscalls.conf file, and the
24; compat option name is prefixed to the syscall name.  Other than
25; that, they're like NODEF (for 'compat' options), or STD (for
26; 'libcompat' options).
27;
28; The type-dependent arguments are as follows:
29; For STD, NODEF, NOARGS, and compat syscalls:
30;	{ pseudo-proto } [alias]
31; For other syscalls:
32;	[comment]
33;
34; #ifdef's, etc. may be included, and are copied to the output files.
35; #include's are copied to the syscall names and switch definition files only.
36
37#include <sys/param.h>
38#include <sys/poll.h>
39#include <sys/systm.h>
40#include <sys/signal.h>
41#include <sys/mount.h>
42#include <sys/syscallargs.h>
43#include <sys/time.h>
44
45#include <compat/sys/time.h>
46#include <compat/linux/common/linux_types.h>
47#include <compat/linux/common/linux_mmap.h>
48#include <compat/linux/common/linux_signal.h>
49#include <compat/linux/common/linux_siginfo.h>
50#include <compat/linux/common/linux_machdep.h>
51#include <compat/linux/common/linux_mqueue.h>
52#include <compat/linux/common/linux_sched.h>
53
54
55#include <compat/linux/linux_syscallargs.h>
56
57%%
58; XXX We have to explicitly declare linux_sys_nosys.
590	NOARGS		{ int|linux_sys||nosys(void); }
601	STD		{ int|linux_sys||exit(int rval); }
612	NOARGS		{ int|sys||fork(void); }
623	NOARGS		{ ssize_t|sys||read(int fd, void *buf, size_t nbyte); }
634	NOARGS		{ ssize_t|sys||write(int fd, const void *buf, \
64			    size_t nbyte); }
655	STD		{ int|linux_sys||open(const char *path, int flags, \
66			    linux_umode_t mode); }
676	NOARGS		{ int|sys||close(int fd); }
687	STD		{ int|linux_sys||waitpid(int pid, int *status, \
69			    int options);}
708	STD		{ int|linux_sys||creat(const char *path, linux_umode_t mode); }
719	NOARGS		{ int|sys||link(const char *path, const char *link); }
7210	STD		{ int|linux_sys||unlink(const char *path); }
7311	NOARGS		{ int|sys||execve(const char *path, char **argp, \
74			    char **envp); }
7512	NOARGS		{ int|sys||chdir(const char *path); }
7613	STD		{ int|linux_sys||time(linux_time_t *t); }
7714	STD		{ int|linux_sys||mknod(const char *path, linux_umode_t mode, \
78			    unsigned dev); }
7915	NOARGS		{ int|sys||chmod(const char *path, int mode); }
8016	STD		{ int|linux_sys||lchown16(const char *path, \
81			    linux_uid16_t uid, linux_gid16_t gid); }
8217	OBSOL		break
8318	OBSOL		ostat
8419	NOARGS		{ long|compat_43_sys||lseek(int fd, long offset, \
85			    int whence); }
8620	NOARGS 		{ pid_t|sys||getpid(void); }
8721	UNIMPL		mount
8822	OBSOL		umount
8923	NOARGS		{ int|sys||setuid(uid_t uid); }
9024	NOARGS		{ uid_t|sys||getuid(void); }
9125	STD		{ int|linux_sys||stime(linux_time_t *t); }
9226	STD		{ int|linux_sys||ptrace(int request, int pid, \
93			    int addr, int data); }
9427	STD		{ int|linux_sys||alarm(unsigned int secs); }
9528	OBSOL		ofstat
9629	STD		{ int|linux_sys||pause(void); }
9730	STD		{ int|linux_sys||utime(const char *path, \
98			    struct linux_utimbuf *times); }
9931	OBSOL		stty
10032	OBSOL		gtty
10133	NOARGS		{ int|sys||access(const char *path, int flags); }
10234	STD		{ int|linux_sys||nice(int incr); }
10335	OBSOL		ftime
10436	NOARGS		{ int|sys||sync(void); }
10537	STD		{ int|linux_sys||kill(int pid, int signum); }
10638	NOARGS		{ int|sys||__posix_rename(const char *from, \
107			    const char *to); }
10839	NOARGS		{ int|sys||mkdir(const char *path, linux_umode_t mode); }
10940	NOARGS		{ int|sys||rmdir(const char *path); }
11041	NOARGS		{ int|sys||dup(int fd); }
11142	STD		{ int|linux_sys||pipe(int *pfds); }
11243	STD		{ int|linux_sys||times(struct times *tms); }
11344	OBSOL		prof
11445	STD		{ int|linux_sys||brk(char *nsize); }
11546	NOARGS		{ int|sys||setgid(gid_t gid); }
11647	NOARGS		{ gid_t|sys||getgid(void); }
11748	STD		{ int|linux_sys||signal(int signum, \
118			    linux_handler_t handler); }
11949	NOARGS		{ uid_t|sys||geteuid(void); }
12050	NOARGS		{ gid_t|sys||getegid(void); }
12151	NOARGS		{ int|sys||acct(char *path); }
12252	UNIMPL		umount
12353	OBSOL		lock
12454	STD		{ int|linux_sys||ioctl(int fd, u_long com, \
125			    void *data); }
12655	STD		{ int|linux_sys||fcntl(int fd, int cmd, void *arg); }
12756	OBSOL		mpx
12857	NOARGS		{ int|sys||setpgid(int pid, int pgid); }
12958	OBSOL		ulimit
13059	STD		{ int|linux_sys||oldolduname( \
131			   struct linux_oldold_utsname *up); }
13260	NOARGS		{ int|sys||umask(int newmask); }
13361	NOARGS		{ int|sys||chroot(char *path); }
13462	UNIMPL		ustat
13563	NOARGS		{ int|sys||dup2(int from, int to); }
13664	NOARGS		{ pid_t|sys||getppid(void); }
13765	NOARGS		{ int|sys||getpgrp(void); }
13866	NOARGS		{ int|sys||setsid(void); }
13967	STD		{ int|linux_sys||sigaction(int signum, \
140			    const struct linux_old_sigaction *nsa, \
141			    struct linux_old_sigaction *osa); }
14268	STD		{ int|linux_sys||siggetmask(void); }
14369	STD		{ int|linux_sys||sigsetmask(linux_old_sigset_t mask); }
14470	STD		{ int|linux_sys||setreuid16(linux_uid16_t ruid, \
145			    linux_uid16_t euid); }
14671	STD		{ int|linux_sys||setregid16(linux_gid16_t rgid, \
147			    linux_gid16_t egid); }
14872	STD		{ int|linux_sys||sigsuspend(void *restart, \
149			    int oldmask, int mask); }
15073	STD		{ int|linux_sys||sigpending(linux_old_sigset_t *set); }
15174	NOARGS		{ int|compat_43_sys||sethostname(char *hostname, \
152			    u_int len);}
15375	STD		{ int|linux_sys||setrlimit(u_int which, \
154			    struct orlimit *rlp); }
15576	STD		{ int|linux_sys||getrlimit(u_int which, \
156			    struct orlimit *rlp); }
15777	NOARGS		{ int|compat_50_sys||getrusage(int who, struct rusage50 *rusage); }
15878	STD		{ int|linux_sys||gettimeofday(struct timeval50 *tp, \
159			    struct timezone *tzp); }
16079	STD		{ int|linux_sys||settimeofday(struct timeval50 *tp, \
161			    struct timezone *tzp); }
16280	STD		{ int|linux_sys||getgroups16(int gidsetsize, \
163			    linux_gid16_t *gidset); }
16481	STD		{ int|linux_sys||setgroups16(int gidsetsize, \
165			    linux_gid16_t *gidset); }
16682	STD		{ int|linux_sys||oldselect(struct linux_oldselect *lsp); }
16783	NOARGS		{ int|sys||symlink(const char *path, const char *link); }
16884	NOARGS		{ int|compat_43_sys||lstat(const char *path, \
169			    struct stat43 *ub); } oolstat
17085	NOARGS		{ ssize_t|sys||readlink(const char *path, char *buf, \
171			    int count); }
172#ifdef EXEC_AOUT
17386	STD		{ int|linux_sys||uselib(const char *path); }
174#else
17586	EXCL		uselib
176#endif
17787	STD		{ int|linux_sys||swapon(char *name); }
17888	STD		{ int|linux_sys||reboot(int magic1, int magic2, \
179			    int cmd, void *arg); }
18089	STD		{ int|linux_sys||readdir(int fd, void *dent, \
181			    unsigned int count); }
18290	STD		{ int|linux_sys||old_mmap(struct linux_oldmmap *lmp); }
18391	NOARGS		{ int|sys||munmap(void *addr, size_t len); }
18492	NOARGS		{ int|compat_43_sys||truncate(const char *path, \
185			    long length); }
18693	NOARGS		{ int|compat_43_sys||ftruncate(int fd, long length); }
18794	NOARGS		{ int|sys||fchmod(int fd, linux_umode_t mode); }
18895	STD		{ int|linux_sys||fchown16(int fd, linux_uid16_t uid, \
189			    linux_gid16_t gid); }
19096	STD		{ int|linux_sys||getpriority(int which, int who); }
19197	NOARGS		{ int|sys||setpriority(int which, int who, int prio); }
19298	NOARGS		{ int|sys||profil(void *samples, u_int size, \
193			    u_int offset, u_int scale); }
19499	STD		{ int|linux_sys||statfs(const char *path, \
195			    struct linux_statfs *sp); }
196100	STD		{ int|linux_sys||fstatfs(int fd, \
197			    struct linux_statfs *sp); }
198101	UNIMPL
199102	STD		{ int|linux_sys||socketcall(int what, void *args); }
200103	UNIMPL		syslog
201104	NOARGS		{ int|compat_50_sys||setitimer(int which, \
202			    struct itimerval50 *itv, \
203			    struct itimerval50 *oitv); }
204105	NOARGS		{ int|compat_50_sys||getitimer(int which, \
205			    struct itimerval50 *itv); }
206106	STD		{ int|linux_sys||stat(const char *path, \
207			    struct linux_stat *sp); }
208107	STD		{ int|linux_sys||lstat(const char *path, \
209			    struct linux_stat *sp); }
210108	STD		{ int|linux_sys||fstat(int fd, struct linux_stat *sp); }
211109	STD		{ int|linux_sys||olduname(struct linux_oldutsname *up); }
212110	UNIMPL
213111	UNIMPL		vhangup
214112	UNIMPL		idle
215113	UNIMPL		syscall
216114	STD		{ int|linux_sys||wait4(int pid, int *status, \
217			    int options, struct rusage50 *rusage); }
218115	STD		{ int|linux_sys||swapoff(const char *path); }
219116	STD		{ int|linux_sys||sysinfo(struct linux_sysinfo *arg); }
220117	STD		{ int|linux_sys||ipc(int what, int a1, int a2, int a3, \
221			    void *ptr); }
222118	NOARGS		{ int|sys||fsync(int fd); }
223119	STD		{ int|linux_sys||sigreturn(struct linux_sigcontext *scp); }
224120	STD		{ int|linux_sys||clone(int flags, void *stack, \
225			    void *parent_tidptr, void *tls, void *child_tidptr); }
226121	STD		{ int|linux_sys||setdomainname(char *domainname, \
227			    int len); }
228122	STD		{ int|linux_sys||uname(struct linux_utsname *up); }
229123	UNIMPL		modify_ldt
230124	UNIMPL		adjtimex
231125	STD		{ int|linux_sys||mprotect(const void *start, \
232			    unsigned long len, int prot); }
233126	STD		{ int|linux_sys||sigprocmask(int how, \
234			    const linux_old_sigset_t *set, \
235			    linux_old_sigset_t *oset); }
236127	UNIMPL		create_module
237128	UNIMPL		init_module
238129	UNIMPL		delete_module
239130	UNIMPL		get_kernel_syms
240131	UNIMPL		quotactl
241132	NOARGS		{ pid_t|sys||getpgid(pid_t pid); }
242133	NOARGS		{ int|sys||fchdir(int fd); }
243134	UNIMPL		bdflush
244135	UNIMPL		sysfs
245136	STD		{ int|linux_sys||personality(unsigned long per); }
246137	UNIMPL		afs_syscall
247138	STD		{ int|linux_sys||setfsuid(uid_t uid); }
248139	STD		{ int|linux_sys||setfsgid(gid_t gid); }
249140	STD		{ int|linux_sys||llseek(int fd, u_int32_t ohigh, \
250			    u_int32_t olow, void *res, int whence); }
251141	STD		{ int|linux_sys||getdents(int fd, \
252			    struct linux_dirent *dent, unsigned int count); }
253142	STD		{ int|linux_sys||select(int nfds, fd_set *readfds, \
254			    fd_set *writefds, fd_set *exceptfds, \
255			    struct timeval50 *timeout); }
256143	NOARGS		{ int|sys||flock(int fd, int how); }
257144	NOARGS		{ int|sys|13|msync(void *addr, size_t len, int flags); }
258145	NOARGS		{ ssize_t|sys||readv(int fd, \
259			    const struct iovec *iovp, int iovcnt); }
260146	NOARGS		{ ssize_t|sys||writev(int fd, \
261			    const struct iovec *iovp, int iovcnt); }
262147	NOARGS		{ pid_t|sys||getsid(pid_t pid); }
263148	STD		{ int|linux_sys||fdatasync(int fd); }
264149	STD		{ int|linux_sys||__sysctl(struct linux___sysctl *lsp); }
265150	NOARGS		{ int|sys||mlock(void *addr, size_t len); }
266151	NOARGS		{ int|sys||munlock(void *addr, size_t len); }
267152	NOARGS		{ int|sys||mlockall(int flags); }
268153	NOARGS		{ int|sys||munlockall(void); }
269154	STD		{ int|linux_sys||sched_setparam(pid_t pid, \
270			    const struct linux_sched_param *sp); }
271155	STD		{ int|linux_sys||sched_getparam(pid_t pid, \
272			    struct linux_sched_param *sp); }
273156	STD		{ int|linux_sys||sched_setscheduler(pid_t pid, \
274			    int policy, const struct linux_sched_param *sp); }
275157	STD		{ int|linux_sys||sched_getscheduler(pid_t pid); }
276158	STD		{ int|linux_sys||sched_yield(void); }
277159	STD		{ int|linux_sys||sched_get_priority_max(int policy); }
278160	STD		{ int|linux_sys||sched_get_priority_min(int policy); }
279161	UNIMPL		sched_rr_get_interval
280162	STD		{ int|linux_sys||nanosleep( \
281			    const struct linux_timespec *rqtp, \
282			    struct linux_timespec *rmtp); }
283163	STD		{ void *|linux_sys||mremap(void *old_address, \
284			    size_t old_size, size_t new_size, u_long flags); }
285164	STD		{ int|linux_sys||setresuid16(linux_uid16_t ruid, \
286			    linux_uid16_t euid, linux_uid16_t suid); }
287165	STD		{ int|linux_sys||getresuid16(linux_uid16_t *ruid, \
288			    linux_uid16_t *euid, linux_uid16_t *suid); }
289166	UNIMPL
290167	UNIMPL		query_module
291168	NOARGS		{ int|sys||poll(struct pollfd *fds, u_int nfds, \
292			    int timeout); }
293169	UNIMPL		nfsservctl
294170	STD		{ int|linux_sys||setresgid16(linux_gid16_t rgid, \
295			    linux_gid16_t egid, linux_gid16_t sgid); }
296171	STD		{ int|linux_sys||getresgid16(linux_gid16_t *rgid, \
297			    linux_gid16_t *egid, linux_gid16_t *sgid); }
298172	UNIMPL		prctl
299173	UNIMPL		rt_sigreturn
300;173	STD		{ int|linux_sys||rt_sigreturn( \
301;			    struct linux_rt_sigframe *sfp); }
302174	STD		{ int|linux_sys||rt_sigaction(int signum, \
303			    const struct linux_sigaction *nsa, \
304			    struct linux_sigaction *osa, \
305			    size_t sigsetsize); }
306175	STD		{ int|linux_sys||rt_sigprocmask(int how, \
307			    const linux_sigset_t *set, \
308			    linux_sigset_t *oset, \
309			    size_t sigsetsize); }
310176	STD		{ int|linux_sys||rt_sigpending( \
311			    linux_sigset_t *set, \
312			    size_t sigsetsize); }
313177	STD		{ int|linux_sys||rt_sigtimedwait( \
314			    const linux_sigset_t *set, \
315			    linux_siginfo_t *info, \
316			    const struct linux_timespec *timeout); }
317178	STD		{ int|linux_sys||rt_queueinfo(int pid, int signum, \
318			    linux_siginfo_t *uinfo); }
319179	STD		{ int|linux_sys||rt_sigsuspend(linux_sigset_t *unewset, \
320			    size_t sigsetsize); }
321180	STD		{ int|linux_sys||pread(int fd, char *buf, \
322			    size_t nbyte, off_t offset); }
323181	STD		{ int|linux_sys||pwrite(int fd, char *buf, \
324			    size_t nbyte, off_t offset); }
325182	STD		{ int|linux_sys||chown16(const char *path, \
326			    linux_uid16_t uid, linux_gid16_t gid); }
327183	NOARGS		{ int|sys||__getcwd(char *bufp, size_t length); }
328184	UNIMPL		capget
329185	UNIMPL		capset
330186	STD		{ int|linux_sys||sigaltstack( \
331			    const struct linux_sigaltstack *ss, \
332			    struct linux_sigaltstack *oss); }
333187	UNIMPL		sendfile
334188	UNIMPL		getpmsg
335189	UNIMPL		putpmsg
336190	NOARGS		vfork { int|sys|14|vfork(void); }
337191	STD		{ int|linux_sys||ugetrlimit(int which, \
338			    struct rlimit *rlp); }
339#define linux_sys_mmap2_args linux_sys_mmap_args
340192	NOARGS		{ linux_off_t|linux_sys||mmap2(unsigned long addr, \
341			    size_t len, int prot, int flags, int fd, \
342			    linux_off_t offset); }
343193	STD		{ int|linux_sys||truncate64(const char *path, \
344				off_t length); }
345194	STD		{ int|linux_sys||ftruncate64(unsigned int fd, \
346				off_t length); }
347195	STD		{ int|linux_sys||stat64(const char *path, \
348				struct linux_stat64 *sp); }
349196	STD		{ int|linux_sys||lstat64(const char *path, \
350				struct linux_stat64 *sp); }
351197	STD		{ int|linux_sys||fstat64(int fd, \
352				struct linux_stat64 *sp); }
353198	NOARGS		{ int|sys||__posix_lchown(const char *path, uid_t uid, \
354				gid_t gid); }
355199	NOARGS		getuid32 { uid_t|sys||getuid(void); }
356200	NOARGS		getgid32 { gid_t|sys||getgid(void); }
357201	NOARGS		geteuid32 { uid_t|sys||geteuid(void); }
358202	NOARGS		getegid32 { gid_t|sys||getegid(void); }
359203	NOARGS		setreuid32 { int|sys||setreuid(uid_t ruid, \
360				uid_t euid); }
361204	NOARGS		setregid32 { int|sys||setregid(gid_t rgid, \
362				gid_t egid); }
363205	NOARGS		getgroups32 { int|sys||getgroups(int gidsetsize, \
364				gid_t *gidset); }
365206	NOARGS		setgroups32 { int|sys||setgroups(int gidsetsize, \
366				gid_t *gidset); }
367207	NOARGS		fchown32 { int|sys||__posix_fchown(int fd, uid_t uid, \
368				gid_t gid); }
369208	STD		setresuid32 { int|linux_sys||setresuid(uid_t ruid, \
370				uid_t euid, uid_t suid); }
371209	STD		getresuid32 { int|linux_sys||getresuid(uid_t *ruid, \
372				uid_t *euid, uid_t *suid); }
373210	STD		setresgid32 { int|linux_sys||setresgid(gid_t rgid, \
374				gid_t egid, gid_t sgid); }
375211	STD		getresgid32 { int|linux_sys||getresgid(gid_t *rgid, \
376				gid_t *egid, gid_t *sgid); }
377212	NOARGS		chown32 { int|sys||__posix_chown(const char *path, \
378				uid_t uid, gid_t gid); }
379213	NOARGS		setuid32 { int|sys||setuid(uid_t uid); }
380214	NOARGS		setgid32 { int|sys||setgid(gid_t gid); }
381215	NOARGS		setfsuid32 { int|linux_sys||setfsuid(uid_t uid); }
382216	NOARGS		setfsgid32 { int|linux_sys||setfsgid(gid_t gid); }
383217	STD		{ int|linux_sys||getdents64(int fd, \
384			    struct linux_dirent64 *dent, unsigned int count); }
385218	UNIMPL		pivot_root
386219	NOARGS		{ int|sys||mincore(void *addr, size_t len, char *vec); }
387220	NOARGS		{ int|sys||madvise(void *addr, size_t len, int behav); }
388221	STD		{ int|linux_sys||fcntl64(int fd, int cmd, void *arg); }
389222	UNIMPL		/* for tux */
390223	UNIMPL		/* unused */
391224	NOARGS		{ pid_t|linux_sys||gettid(void); }
392225	STD		{ ssize_t|linux_sys||readahead(int fd, off_t offset, \
393			    size_t count); }
394226	STD		{ int|linux_sys||setxattr(char *path, char *name, \
395			    void *value, size_t size, int flags); }
396227	STD		{ int|linux_sys||lsetxattr(char *path, char *name, \
397			    void *value, size_t size, int flags); }
398228	STD		{ int|linux_sys||fsetxattr(int fd, char *name, \
399			    void *value, size_t size, int flags); }
400229	STD		{ ssize_t|linux_sys||getxattr(char *path, char *name, \
401			    void *value, size_t size); }
402230	STD		{ ssize_t|linux_sys||lgetxattr(char *path, char *name, \
403			    void *value, size_t size); }
404231	STD		{ ssize_t|linux_sys||fgetxattr(int fd, char *name, \
405			    void *value, size_t size); }
406232	STD		{ ssize_t|linux_sys||listxattr(char *path, char *list, \
407			    size_t size); }
408233	STD		{ ssize_t|linux_sys||llistxattr(char *path, char *list, \
409			    size_t size); }
410234	STD		{ ssize_t|linux_sys||flistxattr(int fd, char *list, \
411			    size_t size); }
412235	STD		{ int|linux_sys||removexattr(char *path, char *name); }
413236	STD		{ int|linux_sys||lremovexattr(char *path, char *name); }
414237	STD		{ int|linux_sys||fremovexattr(int fd, char *name); }
415238	STD		{ int|linux_sys||tkill(int tid, int sig); }
416239	UNIMPL		sendfile64
417240	STD		{ int|linux_sys||futex(int *uaddr, int op, int val, \
418			    const struct linux_timespec *timeout, int *uaddr2, \
419			    int val3); }
420241	STD		{ int|linux_sys||sched_setaffinity(pid_t pid, \
421			    unsigned int len, unsigned long *mask); }
422242	STD		{ int|linux_sys||sched_getaffinity(pid_t pid, \
423			    unsigned int len, unsigned long *mask); }
424243	UNIMPL		io_setup
425244	UNIMPL		io_destroy
426245	UNIMPL		io_getevents
427246	UNIMPL		io_submit
428247	UNIMPL		io_cancel
429248	STD		{ int|linux_sys||exit_group(int error_code); }
430249	UNIMPL		lookup_dcookie
431250	STD		{ int|linux_sys||epoll_create(int size); }
432251	STD		{ int|linux_sys||epoll_ctl(int epfd, int op, int fd, \
433			    struct linux_epoll_event *event); }
434252	STD		{ int|linux_sys||epoll_wait(int epfd, \
435			    struct linux_epoll_event *events, int maxevents, \
436			    int timeout); }
437253	UNIMPL		remap_file_pages
438254	UNIMPL		set_thread_area
439255	UNIMPL		get_thread_area
440256	STD		{ int|linux_sys||set_tid_address(int *tid); }
441257	STD		{ int|linux_sys||timer_create(clockid_t clockid, \
442			    struct linux_sigevent *evp, timer_t *timerid); }
443258	STD		{ int|linux_sys||timer_settime(timer_t timerid, \
444			    int flags, const struct linux_itimerspec *tim, \
445			    struct linux_itimerspec *otim); }
446259	STD		{ int|linux_sys||timer_gettime(timer_t timerid, \
447			    struct linux_itimerspec *tim); }
448260	NOARGS		{ int|sys||timer_getoverrun(timer_t timerid); }
449261	NOARGS		{ int|sys||timer_delete(timer_t timerid); }
450262	STD		{ int|linux_sys||clock_settime(clockid_t which, \
451			    struct linux_timespec *tp); }
452263	STD		{ int|linux_sys||clock_gettime(clockid_t which, \
453			    struct linux_timespec *tp); }
454264	STD		{ int|linux_sys||clock_getres(clockid_t which, \
455			    struct linux_timespec *tp); }
456265	STD		{ int|linux_sys||clock_nanosleep(clockid_t which, \
457			    int flags, struct linux_timespec *rqtp, \
458			    struct linux_timespec *rmtp); }
459266	STD		{ int|linux_sys||statfs64(const char *path, \
460			    size_t sz, struct linux_statfs64 *sp); }
461267	STD		{ int|linux_sys||fstatfs64(int fd, \
462			    size_t sz, struct linux_statfs64 *sp); }
463268	STD		{ int|linux_sys||tgkill(int tgid, int tid, int sig); }
464269	NOARGS		{ int|compat_50_sys||utimes(const char *path, \
465			    const struct timeval50 *tptr); }
466270	STD		{ int|linux_sys||fadvise64_64(int fd, off_t offset, \
467			    off_t len, int advice); }
468271	UNIMPL		pciconfig_iobase
469272	UNIMPL		pciconfig_read
470273	UNIMPL		pciconfig_write
471274	STD		{ linux_mqd_t|linux_sys||mq_open(const char *name, \
472			    int oflag, linux_umode_t mode, \
473			    struct linux_mq_attr *attr); }
474275	STD		{ int|linux_sys||mq_unlink(const char *name); }
475276	STD		{ int|linux_sys||mq_timedsend(linux_mqd_t mqdes, \
476			    const char *msg_ptr, size_t msg_len, \
477			    unsigned int msg_prio, \
478			    const struct linux_timespec *abs_timeout); }
479277	STD		{ ssize_t|linux_sys||mq_timedreceive(linux_mqd_t mqdes, \
480			    char *msg_ptr, size_t msg_len, \
481			    unsigned int *msg_prio, \
482			    const struct linux_timespec *abs_timeout); }
483278	STD		{ int|linux_sys||mq_notify(linux_mqd_t mqdes, \
484			    const struct linux_sigevent *sevp); }
485279	STD		{ int|linux_sys||mq_getsetattr(linux_mqd_t mqdes, \
486			    const struct linux_mq_attr *newattr, \
487			    struct linux_mq_attr *oldattr); }
488280	STD		{ int|linux_sys||waitid(int idtype, id_t id, \
489			    linux_siginfo_t *infop, int options, \
490			    struct rusage50 *rusage); }
491281	UNIMPL		socket
492282	UNIMPL		bind
493283	UNIMPL		connect
494284	UNIMPL		listen
495285	UNIMPL		accept
496286	UNIMPL		getsockname
497287	UNIMPL		getpeername
498288	UNIMPL		socketpair
499289	UNIMPL		send
500290	UNIMPL		sendto
501291	UNIMPL		recv
502292	UNIMPL		recvfrom
503293	UNIMPL		shutdown
504294	UNIMPL		setsockopt
505295	UNIMPL		getsockopt
506296	UNIMPL		sendmsg
507297	UNIMPL		recvmsg
508298	UNIMPL		semop
509299	UNIMPL		semget
510300	UNIMPL		semctl
511301	UNIMPL		msgsnd
512302	UNIMPL		msgrcv
513303	UNIMPL		msgget
514304	UNIMPL		msgctl
515305	UNIMPL		shmat
516306	UNIMPL		shmdt
517307	UNIMPL		shmget
518308	UNIMPL		shmctl
519309	UNIMPL		add_key
520310	UNIMPL		request_key
521311	UNIMPL		keyctl
522312	UNIMPL		semtimedop
523313	UNIMPL		vserver
524314	UNIMPL		ioptio_set
525315	UNIMPL		ioptio_get
526316	STD		{ int|linux_sys||inotify_init(void); }
527317	STD		{ int|linux_sys||inotify_add_watch(int fd, \
528			    const char *pathname, uint32_t mask); }
529318	STD		{ int|linux_sys||inotify_rm_watch(int fd, int wd); }
530319	UNIMPL		mbind
531320	UNIMPL		get_mempolicy
532321	UNIMPL		set_mempolicy
533322	STD 		{ int|linux_sys||openat(int fd, const char *path, \
534			    int flags, ... linux_umode_t mode); }
535323	NOARGS		{ int|sys||mkdirat(int fd, const char *path, \
536			    linux_umode_t mode); }
537324	STD		{ int|linux_sys||mknodat(int fd, const char *path, \
538			    linux_umode_t mode, unsigned dev); }
539325	STD		{ int|linux_sys||fchownat(int fd, const char *path, \
540			    uid_t owner, gid_t group, int flag); }
541326	UNIMPL		futimesat
542327	STD		{ int|linux_sys||fstatat64(int fd, const char *path, \
543			    struct linux_stat64 *sp, int flag); }
544328	STD		{ int|linux_sys||unlinkat(int fd, const char *path, \
545			    int flag); }
546329	NOARGS		{ int|sys||renameat(int fromfd, const char *from, \
547			    int tofd, const char *to); }
548330	STD		{ int|linux_sys||linkat(int fd1, const char *name1, \
549			    int fd2, const char *name2, int flags); }
550331	NOARGS		{ int|sys||symlinkat(const char *path1, int fd, \
551			    const char *path2); }
552332	NOARGS		{ ssize_t|sys||readlinkat(int fd, const char *path, \
553			    char *buf, size_t bufsize); }
554333	STD		{ int|linux_sys||fchmodat(int fd, const char *path, \
555			    linux_umode_t mode); }
556334	STD		{ int|linux_sys||faccessat(int fd, const char *path, \
557			    int amode); }
558335	STD		{ int|linux_sys||pselect6(int nfds, fd_set *readfds, \
559			   fd_set *writefds, fd_set *exceptfds, \
560			   struct linux_timespec *timeout, \
561			   linux_sized_sigset_t *ss); }
562336	STD		{ int|linux_sys||ppoll(struct pollfd *fds, u_int nfds, \
563			    struct linux_timespec *timeout, \
564			    linux_sigset_t *sigset); }
565337	UNIMPL		unshare
566			;
567			; The NetBSD native robust list calls have different
568			; argument names / types, but they are ABI-compatible
569			; with Linux.
570			;
571338	NOARGS		{ int|sys||__futex_set_robust_list(void *head, \
572			    size_t len); }
573339	NOARGS		{ int|sys||__futex_get_robust_list(lwpid_t lwpid, \
574			    void **headp, size_t *lenp); }
575340	UNIMPL		splice
576341	STD		{ int|linux_sys||sync_file_range(int fd, \
577			    off_t offset, off_t nbytes, unsigned int flags); }
578342	UNIMPL		tee
579343	UNIMPL		vmsplice
580344	UNIMPL		move_pages
581345	STD		{ int|linux_sys||getcpu(unsigned int *cpu, \
582			    unsigned int *node, \
583			    struct linux_getcpu_cache *tcache); }
584346	STD		{ int|linux_sys||epoll_pwait(int epfd, \
585			    struct linux_epoll_event *events, int maxevents, \
586			    int timeout, const linux_sigset_t *sigmask); }
587347	UNIMPL		kexec_load
588348	STD		{ int|linux_sys||utimensat(int fd, const char *path, \
589			    struct linux_timespec *times, int flag); }
590349	UNIMPL		signalfd
591350	STD		{ int|linux_sys||timerfd_create(clockid_t clock_id, \
592			    int flags); }
593351	STD		{ int|linux_sys||eventfd(unsigned int initval); }
594352	STD		{ int|linux_sys||fallocate(int fd, int mode, \
595			    off_t offset, off_t len); }
596353	STD		{ int|linux_sys||timerfd_settime(int fd, int flags, \
597			    const struct linux_itimerspec *tim, \
598			    struct linux_itimerspec *otim); }
599354	STD		{ int|linux_sys||timerfd_gettime(int fd, \
600			    struct linux_itimerspec *tim); }
601355	UNIMPL		signalfd4
602356	STD		{ int|linux_sys||eventfd2(unsigned int initval, \
603			    int flags); }
604357	STD		{ int|linux_sys||epoll_create1(int flags); }
605358	STD		{ int|linux_sys||dup3(int from, int to, int flags); }
606359	STD		{ int|linux_sys||pipe2(int *pfds, int flags); }
607360	STD		{ int|linux_sys||inotify_init1(int flags); }
608361	STD		{ int|linux_sys||preadv(int fd, \
609			    const struct iovec *iovp, int iovcnt, \
610			    unsigned long off_lo, unsigned long off_hi); }
611362	STD		{ int|linux_sys||pwritev(int fd, \
612			    const struct iovcnt *iovp, int iovcnt, \
613			    unsigned long off_lo, unsigned long off_hi); }
614363	UNIMPL		rt_tgsigqueueinfo
615364	UNIMPL		perf_counter_open
616365	STD		{ int|linux_sys||recvmmsg(int s, \
617			    struct linux_mmsghdr *msgvec, unsigned int vlen, \
618			    unsigned int flags, struct timespec *timeout); }
619366	STD		{ int|linux_sys||accept4(int s, \
620			    struct osockaddr *name, \
621			    int *anamelen, int flags); }
622367	UNIMPL		fanotify_init
623368	UNIMPL		fanotify_mark
624369	STD		{ int|linux_sys||prlimit64(pid_t pid, int which, \
625			    struct rlimit *new_rlp, struct rlimit *old_rlp); }
626370	UNIMPL		name_to_handle_at
627371	UNIMPL		open_by_handle_at
628372	UNIMPL		clock_adjtime
629373	STD		{ int|linux_sys||syncfs(int fd); }
630374	STD		{ int|linux_sys||sendmmsg(int s, \
631			    struct linux_mmsghdr *msgvec, unsigned int vlen, \
632			    unsigned int flags); }
633375	UNIMPL		setns
634376	UNIMPL		process_vm_readv
635377	UNIMPL		process_vm_writev
636378	UNIMPL		kcmp
637379	UNIMPL		finit_module
638380	UNIMPL		sched_setattr
639381	UNIMPL		sched_getattr
640382	STD		{ int|linux_sys||renameat2(int fromfd, \
641			    const char *from, int tofd, const char *to, \
642			    unsigned int flags); }
643383	UNIMPL		seccomp
644; XXX FIX-me?
645; 384	NOARGS		{ ssize_t|sys||getrandom(void *buf, size_t buflen, \
646			    unsigned int flags); }
647; 385	UNIMPL		memfd_create
648
649; ARMLinux actually has two ranges of syscalls.  Normal syscalls use
650; SWI numbers starting at 0x900000 (__NR_SYSCALL_BASE).  Special
651; ARM-specific syscalls use SWI numbers starting at 0x9f0000
652; (__ARM_NR_BASE).  linux_syscall() (in arch/arm/arm/linux_syscall.c)
653; remaps these down to 0x900180 so that we can use one linux_sysent
654; array for the whole lot.
655
656384	UNIMPL		/* base */
657385	STD		{ int|linux_sys||breakpoint(void); }
658386	STD		{ int|linux_sys||cacheflush(uintptr_t from, \
659				intptr_t to, int flags); }
660387	UNIMPL		usr26
661388	UNIMPL		usr32
662389	STD		{ int|linux_sys||set_tls(void *tls); }
663390	UNIMPL
664391	STD		{ ssize_t|linux_sys||copy_file_range(int fd_in, \
665			off_t * off_in, int fd_out, off_t * off_out, \
666			size_t len, unsigned int flags); }
667392	UNIMPL
668393	UNIMPL
669394	UNIMPL
670395	UNIMPL
671396	UNIMPL
672397	STD		{ int|linux_sys||statx(int fd, const char *path, \
673			    int flag, unsigned int mask, \
674			    struct linux_statx *sp); }
675398	UNIMPL
676399	UNIMPL
677400	UNIMPL
678401	UNIMPL
679402	UNIMPL
680403	UNIMPL
681404	UNIMPL
682405	UNIMPL
683406	UNIMPL
684407	UNIMPL
685408	UNIMPL
686409	UNIMPL
687410	UNIMPL
688411	UNIMPL
689412	UNIMPL
690413	UNIMPL
691414	UNIMPL
692415	UNIMPL
693416	UNIMPL
694417	UNIMPL
695418	UNIMPL
696419	UNIMPL
697420	UNIMPL
698421	UNIMPL
699422	UNIMPL
700423	UNIMPL
701424	UNIMPL
702425	UNIMPL
703426	UNIMPL
704427	UNIMPL
705428	UNIMPL
706429	UNIMPL
707430	UNIMPL
708431	UNIMPL
709432	UNIMPL
710433	UNIMPL
711434	UNIMPL
712435	STD		{ int|linux_sys||clone3( \
713			    struct linux_user_clone3_args *cl_args, \
714			    size_t size); }
715436	STD		{ int|linux_sys||close_range(unsigned int first, \
716			    unsigned int last, unsigned int flags); }
717437	UNIMPL
718438	UNIMPL
719439	STD		{ int|linux_sys||faccessat2(int fd, const char *path, \
720			    int amode, int flags); }
721440	UNIMPL
722441	STD		{ int|linux_sys||epoll_pwait2(int epfd, \
723			    struct linux_epoll_event *events, int maxevents, \
724			    const struct linux_timespec *timeout, \
725			    const linux_sigset_t *sigmask); }
726