$NetBSD: syscalls.master,v 1.3 2021/12/02 04:29:48 ryo Exp $

; NetBSD aarch64 COMPAT_LINUX32 system call name/number "master" file.
;
; The system call numbers are defined by $LINUXSRC/arch/arm/tools/syscall.tbl,
; but linux/arm has multiple syscall tables, these are laid out
; consecutively in this table.
; See the comments at the bottom of this file for details.
;
; (See syscalls.conf to see what it is processed into.)
;
; Fields: number type [type-dependent ...]
;       number  system call number, must be in order
;       type    one of STD, OBSOL, UNIMPL, IGNORED, NODEF, NOARGS, or one of
;               the compatibility options defined in syscalls.conf.
;
; Optional fields are specified after the type field
; (NOTE! they *must* be specified in this order):
;       MODULAR modname :attempt to autoload system call module if not present
;       RUMP:   generate rump syscall entry point
;
; types:
;       STD     always included
;       OBSOL   obsolete, not included in system
;       IGNORED syscall is a null op, but always succeeds
;       UNIMPL  unimplemented, not included in system
;       EXCL    implemented, but not included in system
;       NODEF   included, but don't define the syscall number
;       NOARGS  included, but don't define the syscall args structure
;       INDIR   included, but don't define the syscall args structure,
;               and allow it to be "really" varargs.
;       NOERR   included, syscall does not set errno
;       EXTERN  implemented, but as 3rd party module
;
; arguments:
;       PAD     argument not part of the C interface, used only for padding
;
; The compat options are defined in the syscalls.conf file, and the
; compat option name is prefixed to the syscall name.  Other than
; that, they're like NODEF (for 'compat' options), or STD (for
; 'libcompat' options).
;
; The type-dependent arguments are as follows:
; For STD, NODEF, NOARGS, and compat syscalls:
;       { return_type|prefix|compat(optional)|basename(pseudo-proto); } [alias]
; For other syscalls:
;       [comment]
;
; #ifdef's, etc. may be included, and are copied to the output files.
; #include's are copied to the syscall names and switch definition files only.

#include <sys/param.h>
#include <sys/syscallargs.h>

#include <machine/netbsd32_machdep.h>

#include <compat/netbsd32/netbsd32.h>
#include <compat/netbsd32/netbsd32_syscallargs.h>

#include <compat/linux/common/linux_types.h>
#include <compat/linux/common/linux_mmap.h>
#include <compat/linux/common/linux_signal.h>
#include <compat/linux/common/linux_siginfo.h>
#include <compat/linux/common/linux_machdep.h>
#include <compat/linux/common/linux_ipc.h>
#include <compat/linux/common/linux_sem.h>
#include <compat/linux/linux_syscallargs.h>

#include <compat/linux32/common/linux32_types.h>
#include <compat/linux32/common/linux32_signal.h>
#include <compat/linux32/common/linux32_socketcall.h>
#include <compat/linux32/arch/aarch64/linux32_missing.h>
#include <compat/linux32/linux32_syscallargs.h>

%%

0       NOARGS  { int|linux_sys||nosys(void); } syscall
1       STD     { int|linux32_sys||exit(int rval); }
2       NOARGS  { int|sys||fork(void); }
3       NOARGS  { netbsd32_ssize_t|netbsd32||read(int fd, \
                   netbsd32_voidp buf, netbsd32_size_t nbyte); }
4       NOARGS  { netbsd32_ssize_t|netbsd32||write(int fd, \
                   netbsd32_voidp buf, netbsd32_size_t nbyte); }
5       STD     { int|linux32_sys||open(netbsd32_charp path, int flags, \
                   linux_umode_t mode); }
6       NOARGS  { int|netbsd32||close(int fd); }
7       STD     { int|linux32_sys||waitpid(int pid, netbsd32_intp status, \
                   int options);}
8       STD     { int|linux32_sys||creat(netbsd32_charp path, \
           linux_umode_t mode); }
9       NOARGS  { int|netbsd32||link(netbsd32_charp path, \
                   netbsd32_charp link); }
10      STD     { int|linux32_sys||unlink(netbsd32_charp path); }
11      NOARGS  { int|netbsd32||execve(netbsd32_charp path, \
                   netbsd32_charpp argp, netbsd32_charpp envp); }
12      NOARGS  { int|netbsd32||chdir(netbsd32_charp path); }
13      STD     { int|linux32_sys||time(linux32_timep_t t); }
14      STD     { int|linux32_sys||mknod(netbsd32_charp path, \
                   linux_umode_t mode, unsigned dev); }
15      NOARGS  { int|netbsd32||chmod(netbsd32_charp path, \
           linux_umode_t mode); }
16      STD     { int|linux32_sys||lchown16(netbsd32_charp path, \
                   linux32_uid16_t uid, linux32_gid16_t gid); }
17      OBSOL   break
18      OBSOL   ostat
19      NOARGS  { netbsd32_long|compat_43_netbsd32||olseek(int fd, \
                   netbsd32_long offset, int whence); }
20      NOARGS  { pid_t|sys||getpid(void); }
21      UNIMPL  mount
22      UNIMPL  umount
23      NOARGS  linux_setuid16 { int|netbsd32||setuid(uid_t uid); }
24      NOARGS  linux_getuid16 { uid_t|sys||getuid(void); }
25      STD     { int|linux32_sys||stime(linux32_timep_t t); }
26      STD     { int|linux32_sys||ptrace(int request, int pid, \
                 int addr, int data); }
27      STD     { int|linux32_sys||alarm(unsigned int secs); }
28      OBSOL   ofstat
29      NOARGS  { int|linux_sys||pause(void); }
30      STD     { int|linux32_sys||utime(netbsd32_charp path, \
                   linux32_utimbufp_t times); }
31      OBSOL   stty
32      OBSOL   gtty
33      NOARGS  { int|netbsd32||access(netbsd32_charp path, \
                   int flags); }
34      STD     { int|linux32_sys||nice(int incr); }
35      OBSOL   ftime
36      NOARGS  { int|sys||sync(void); }
37      STD     { int|linux32_sys||kill(int pid, int signum); }
38      NOARGS  { int|netbsd32||__posix_rename(netbsd32_charp from, \
                   netbsd32_charp to); }
39      NOARGS  { int|netbsd32||mkdir(netbsd32_charp path, \
           linux_umode_t mode); }
40      NOARGS  { int|netbsd32||rmdir(netbsd32_charp path); }
41      NOARGS  { int|netbsd32||dup(int fd); }
42      STD     { int|linux32_sys||pipe(netbsd32_intp fd); }
43      STD     { int|linux32_sys||times(linux32_tmsp_t tms); }
44      OBSOL   prof
45      STD     { int|linux32_sys||brk(netbsd32_charp nsize); }
46      NOARGS  linux_setgid16 { int|netbsd32||setgid(gid_t gid); }
47      NOARGS  linux_getgid16 { gid_t|sys||getgid(void); }
48      STD     { int|linux32_sys||signal(int signum, \
                   linux32_handlerp_t handler); }
49      NOARGS  linux_geteuid16 { uid_t|sys||geteuid(void); }
50      NOARGS  linux_getegid16 { gid_t|sys||getegid(void); }
51      NOARGS  { int|netbsd32||acct(netbsd32_charp path); }
52      OBSOL   phys
53      OBSOL   lock
54      STD     { int|linux32_sys||ioctl(int fd, netbsd32_u_long com, \
                   netbsd32_charp data); }
55      STD     { int|linux32_sys||fcntl(int fd, \
                   int cmd, netbsd32_voidp arg); }
56      OBSOL   mpx
57      NOARGS  { int|netbsd32||setpgid(int pid, int pgid); }
58      OBSOL   ulimit
59      STD     { int|linux32_sys||oldolduname( \
                   linux32_oldold_utsnamep_t up); }
60      NOARGS  { int|netbsd32||umask(int newmask); }
61      NOARGS  { int|netbsd32||chroot(netbsd32_charp path); }
62      UNIMPL  ustat
63      NOARGS  { int|netbsd32||dup2(int from, int to); }
64      NOARGS  { pid_t|sys||getppid(void); }
65      NOARGS  { int|sys||getpgrp(void); }
66      NOARGS  { int|sys||setsid(void); }
67      UNIMPL  sigaction
68      STD     { int|linux32_sys||siggetmask(void); }
69      STD     { int|linux32_sys||sigsetmask(linux32_old_sigset_t mask); }
70      STD     { int|linux32_sys||setreuid16(linux32_uid16_t ruid, \
                   linux32_uid16_t euid); }
71      STD     { int|linux32_sys||setregid16(linux32_gid16_t rgid, \
                   linux32_gid16_t egid); }
72      UNIMPL  sigsuspend
73      UNIMPL  sigpending
74      NOARGS  { int|compat_43_netbsd32||osethostname( \
                   netbsd32_charp hostname, u_int len); }
75      STD     { int|linux32_sys||setrlimit(u_int which, \
                   netbsd32_orlimitp_t rlp); }
76      STD     { int|linux32_sys||getrlimit(u_int which, \
                   netbsd32_orlimitp_t rlp); }
77      NOARGS  { int|compat_50_netbsd32||getrusage(int who, \
                   netbsd32_rusage50p_t rusage); }
78      STD     { int|linux32_sys||gettimeofday(netbsd32_timeval50p_t tp, \
                   netbsd32_timezonep_t tzp); }
79      STD     { int|linux32_sys||settimeofday(netbsd32_timeval50p_t tp, \
                   netbsd32_timezonep_t tzp); }
80      STD     { int|linux32_sys||getgroups16(int gidsetsize, \
                   linux32_gid16p_t gidset); }
81      STD     { int|linux32_sys||setgroups16(int gidsetsize, \
                   linux32_gid16p_t gidset); }
82      STD     { int|linux32_sys||oldselect(linux32_oldselectp_t lsp); }
83      NOARGS  { int|netbsd32||symlink(netbsd32_charp path, \
                   netbsd32_charp link); }
84      NOARGS  { int|compat_43_netbsd32||lstat43(netbsd32_charp \
                   path, netbsd32_stat43p_t ub); }
85      NOARGS  { int|netbsd32||readlink(netbsd32_charp path, \
                   netbsd32_charp buf, netbsd32_size_t count); }
86      UNIMPL  uselib
87      STD     { int|linux32_sys||swapon(netbsd32_charp name); }
88      STD     { int|linux32_sys||reboot(int magic1, int magic2, int cmd, \
                   netbsd32_voidp arg); }
89      STD     { int|linux32_sys||readdir(int fd, netbsd32_voidp dent, \
                   unsigned int count); }
90      STD     { int|linux32_sys||old_mmap(linux32_oldmmapp lmp); }
91      NOARGS  { int|netbsd32||munmap(netbsd32_voidp addr, \
                   netbsd32_size_t len); }
92      NOARGS  { int|compat_43_netbsd32||otruncate(netbsd32_charp path, \
                   netbsd32_long length); }
93      NOARGS  { int|compat_43_netbsd32||oftruncate(int fd, \
                   netbsd32_long length); }
94      NOARGS  { int|netbsd32||fchmod(int fd, linux_umode_t mode); }
95      STD     { int|linux32_sys||fchown16(int fd, linux32_uid16_t uid, \
                   linux32_gid16_t gid); }
96      STD     { int|linux32_sys||getpriority(int which, int who); }
97      NOARGS  { int|netbsd32||setpriority(int which, int who, int prio); }
98      NOARGS  { int|netbsd32||profil(netbsd32_voidp samples, \
                   netbsd32_size_t size, netbsd32_u_long offset, \
                   u_int scale); }
99      STD     { int|linux32_sys||statfs(netbsd32_charp path, \
                   linux32_statfsp sp); }
100     STD     { int|linux32_sys||fstatfs(int fd, linux32_statfsp sp); }
101     UNIMPL  ioperm
102     STD     { int|linux32_sys||socketcall(int what, netbsd32_voidp args); }
103     UNIMPL  syslog
104     NOARGS  { int|compat_50_netbsd32||setitimer(int which, \
                   netbsd32_itimerval50p_t itv, \
                   netbsd32_itimerval50p_t oitv); }
105     NOARGS  { int|compat_50_netbsd32||getitimer(int which, \
                   netbsd32_itimerval50p_t itv); }
106     STD     { int|linux32_sys||stat(netbsd32_charp path, \
                   linux32_statp sp); }
107     STD     { int|linux32_sys||lstat(netbsd32_charp path, \
                   linux32_statp sp); }
108     STD     { int|linux32_sys||fstat(int fd, \
                   linux32_statp sp); }
109     STD     { int|linux32_sys||olduname(linux32_oldutsnamep_t up); }
110     UNIMPL  iopl
111     UNIMPL  vhangup
112     UNIMPL  idle
113     UNIMPL  syscall
114     STD     { int|linux32_sys||wait4(int pid, netbsd32_intp status, \
                   int options, netbsd32_rusage50p_t rusage); }
115     STD     { int|linux32_sys||swapoff(netbsd32_charp path); }
116     STD     { int|linux32_sys||sysinfo(linux32_sysinfop_t arg); }
117     STD     { int|linux32_sys||ipc(int what, int a1, int a2, int a3, \
                   netbsd32_voidp ptr); }
118     NOARGS  { int|netbsd32||fsync(int fd); }
119     STD     { int|linux32_sys||sigreturn(linux32_sigcontextp_t scp); }
120     STD     { int|linux32_sys||clone(int flags, netbsd32_voidp stack, \
                   netbsd32_voidp parent_tidptr, netbsd32_voidp tls, \
                   netbsd32_voidp child_tidptr); }
121     STD     { int|linux32_sys||setdomainname(netbsd32_charp domainname, \
                   int len); }
122     STD     { int|linux32_sys||uname(linux32_utsnamep up); }
123     UNIMPL  modify_ldt
124     UNIMPL  adjtimex
125     STD     { int|linux32_sys||mprotect(netbsd32_voidp start, \
                   netbsd32_size_t len, int prot); }
126     UNIMPL  sigprocmask
127     UNIMPL  create_module
128     UNIMPL  init_module
129     UNIMPL  delete_module
130     UNIMPL  get_kernel_syms
131     UNIMPL  quotactl
132     NOARGS  { int|netbsd32||getpgid(pid_t pid); }
133     NOARGS  { int|netbsd32||fchdir(int fd); }
134     UNIMPL  bdflush
135     UNIMPL  sysfs
136     STD     { int|linux32_sys||personality(netbsd32_u_long per); }
137     UNIMPL  afs_syscall
138     NOARGS  setfsuid16 { int|linux32_sys||setfsuid(uid_t uid); }
139     NOARGS  setfsgid16 { int|linux32_sys||setfsgid(gid_t gid); }
140     STD     { int|linux32_sys||llseek(int fd, u_int32_t ohigh, \
                   u_int32_t olow, netbsd32_voidp res, int whence); }
141     STD     { int|linux32_sys||getdents(int fd, \
                   linux32_direntp_t dent, unsigned int count); }
142     STD     { int|linux32_sys||select(int nfds, \
                   netbsd32_fd_setp_t readfds, \
                   netbsd32_fd_setp_t writefds, \
                   netbsd32_fd_setp_t exceptfds, \
                   netbsd32_timeval50p_t timeout); }
143     NOARGS  { int|netbsd32||flock(int fd, int how); }
144     NOARGS  { int|netbsd32|13|msync(netbsd32_voidp addr, \
                   netbsd32_size_t len, int flags); }
145     NOARGS  { int|netbsd32||readv(int fd, \
                   netbsd32_iovecp_t iovp, int iovcnt); }
146     NOARGS  { netbsd32_ssize_t|netbsd32||writev(int fd, \
                   netbsd32_iovecp_t iovp, int iovcnt); }
147     NOARGS  { pid_t|netbsd32||getsid(pid_t pid); }
148     STD     { int|linux32_sys||fdatasync(int fd); }
149     STD     { int|linux32_sys||__sysctl(linux32___sysctlp_t lsp); }
150     NOARGS  { int|netbsd32||mlock(netbsd32_voidp addr, \
                   netbsd32_size_t len); }
151     NOARGS  { int|netbsd32||munlock(netbsd32_voidp addr, \
                   netbsd32_size_t len); }
152     NOARGS  { int|netbsd32||mlockall(int flags); }
153     NOARGS  { int|sys||munlockall(void); }
154     STD     { int|linux32_sys||sched_setparam(pid_t pid, \
                   const linux32_sched_paramp_t sp); }
155     STD     { int|linux32_sys||sched_getparam(pid_t pid, \
                   linux32_sched_paramp_t sp); }
156     STD     { int|linux32_sys||sched_setscheduler(pid_t pid, \
                   int policy, linux32_sched_paramp_t sp); }
157     STD     { int|linux32_sys||sched_getscheduler(pid_t pid); }
158     NOARGS  { int|linux_sys||sched_yield(void); }
159     STD     { int|linux32_sys||sched_get_priority_max(int policy); }
160     STD     { int|linux32_sys||sched_get_priority_min(int policy); }
161     UNIMPL  sched_rr_get_interval
162     STD     { int|linux32_sys||nanosleep(linux32_timespecp_t rqtp, \
                   linux32_timespecp_t rmtp); }
163     STD     { int|linux32_sys||mremap(netbsd32_voidp old_address, \
                   netbsd32_size_t old_size, netbsd32_size_t new_size, \
                   netbsd32_u_long flags); }
164     STD     { int|linux32_sys||setresuid16(linux32_uid16_t ruid, \
                   linux32_uid16_t euid, linux32_uid16_t suid); }
165     STD     { int|linux32_sys||getresuid16(linux32_uid16p_t ruid, \
                   linux32_uid16p_t euid, linux32_uid16p_t suid); }
166     UNIMPL  vm86
167     UNIMPL  query_module
168     NOARGS  { int|netbsd32||poll(netbsd32_pollfdp_t fds, u_int nfds, \
                   int timeout); }
169     UNIMPL  nfsservctl
170     STD     { int|linux32_sys||setresgid16(linux32_gid16_t rgid, \
                   linux32_gid16_t egid, linux32_gid16_t sgid); }
171     STD     { int|linux32_sys||getresgid16(linux32_gid16p_t rgid, \
                   linux32_gid16p_t egid, linux32_gid16p_t sgid); }
172     UNIMPL  prctl
173     STD     { int|linux32_sys||rt_sigreturn(linux32_ucontextp_t ucp); }
174     STD     { int|linux32_sys||rt_sigaction(int signum, \
                   linux32_sigactionp_t nsa, \
                   linux32_sigactionp_t osa, \
                   netbsd32_size_t sigsetsize); }
175     STD     { int|linux32_sys||rt_sigprocmask(int how, \
                    linux32_sigsetp_t set, \
                    linux32_sigsetp_t oset, \
                    netbsd32_size_t sigsetsize); }
176     STD     { int|linux32_sys||rt_sigpending(linux32_sigsetp_t set, \
                   netbsd32_size_t sigsetsize); }
177     STD     { int|linux32_sys||rt_sigtimedwait( \
                   const linux32_sigsetp_t set, \
                   linux32_siginfop_t info, \
                   const linux32_timespecp_t timeout); }
178     STD     { int|linux32_sys||rt_queueinfo(int pid, int sig, \
                   linux32_siginfop_t uinfo); }
179     STD     { int|linux32_sys||rt_sigsuspend(linux32_sigsetp_t unewset, \
                   netbsd32_size_t sigsetsize); }
180     STD     { netbsd32_ssize_t|linux32_sys||pread(int fd, \
                   netbsd32_voidp buf, netbsd32_size_t nbyte, \
                   netbsd32_off_t offset); }
181     STD     { netbsd32_ssize_t|linux32_sys||pwrite(int fd, \
                   netbsd32_voidp buf, netbsd32_size_t nbyte, \
                   netbsd32_off_t offset); }
182     STD     { int|linux32_sys||chown16(netbsd32_charp path, \
                   linux32_uid16_t uid, linux32_gid16_t gid); }
183     NOARGS  { int|netbsd32||__getcwd(netbsd32_charp bufp, \
                   netbsd32_size_t length); }
184     UNIMPL  capget
185     UNIMPL  capset
186     UNIMPL  sigaltstack
187     UNIMPL  sendfile
188     UNIMPL  getpmsg
189     UNIMPL  putpmsg
190     NOARGS  { int|sys|14|vfork(void); }
191     STD     { int|linux32_sys||ugetrlimit(int which, \
                   netbsd32_orlimitp_t rlp); }
192     STD     { linux32_off_t|linux32_sys||mmap2(netbsd32_u_long addr, \
                   netbsd32_size_t len, int prot, int flags, int fd, \
                   linux32_off_t offset); }
193     STD     { int|linux32_sys||truncate64(netbsd32_charp path, \
                   uint32_t lenlo, uint32_t lenhi); }
194     STD     { int|linux32_sys||ftruncate64(unsigned int fd, \
                   uint32_t lenlo, uint32_t lenhi); }
195     STD     { int|linux32_sys||stat64(netbsd32_charp path, \
                   linux32_stat64p sp); }
196     STD     { int|linux32_sys||lstat64(netbsd32_charp path, \
                   linux32_stat64p sp); }
197     STD     { int|linux32_sys||fstat64(int fd, \
                   linux32_stat64p sp); }
198     NOARGS  { int|netbsd32||__posix_lchown(netbsd32_charp path, \
                   uid_t uid, gid_t gid); }
199     NOARGS  { uid_t|sys||getuid(void); }
200     NOARGS  { gid_t|sys||getgid(void); }
201     NOARGS  { uid_t|sys||geteuid(void); }
202     NOARGS  { gid_t|sys||getegid(void); }
203     NOARGS  { int|netbsd32||setreuid(uid_t ruid, uid_t euid); }
204     NOARGS  { int|netbsd32||setregid(gid_t rgid, gid_t egid); }
205     NOARGS  { int|netbsd32||getgroups(int gidsetsize, \
                   netbsd32_gid_tp gidset); }
206     NOARGS  { int|netbsd32||setgroups(int gidsetsize, \
                   netbsd32_gid_tp gidset); }
207     NOARGS  { int|netbsd32||__posix_fchown(int fd, uid_t uid, gid_t gid); }
208     STD     { int|linux32_sys||setresuid(uid_t ruid, uid_t euid, \
                   uid_t suid); }
209     STD     { int|linux32_sys||getresuid(linux32_uidp_t ruid, \
                   linux32_uidp_t euid, linux32_uidp_t suid); }
210     STD     { int|linux32_sys||setresgid(gid_t rgid, gid_t egid, \
                   gid_t sgid); }
211     STD     { int|linux32_sys||getresgid(linux32_gidp_t rgid, \
                   linux32_gidp_t egid, linux32_gidp_t sgid); }
212     NOARGS  { int|netbsd32||__posix_chown(netbsd32_charp path, \
                   uid_t uid, gid_t gid); }
213     NOARGS  { int|netbsd32||setuid(uid_t uid); }
214     NOARGS  { int|netbsd32||setgid(gid_t gid); }
215     STD     { int|linux32_sys||setfsuid(uid_t uid); }
216     STD     { int|linux32_sys||setfsgid(gid_t gid); }
217     STD     { int|linux32_sys||getdents64(int fd, \
                   linux32_dirent64p_t dent, unsigned int count); }
218     UNIMPL  pivot_root
219     NOARGS  { int|netbsd32||mincore(netbsd32_voidp addr, \
                   netbsd32_size_t len, netbsd32_charp vec); }
220     NOARGS  { int|netbsd32||madvise(netbsd32_voidp addr, \
                   netbsd32_size_t len, int behav); }
; fcntl64() - Exactly the same as fcntl()
#define linux32_sys_fcntl64 linux32_sys_fcntl
#define linux32_sys_fcntl64_args linux32_sys_fcntl_args
221     NOARGS  { int|linux32_sys||fcntl64(int fd, \
                   int cmd, netbsd32_voidp arg); }
222     UNIMPL  /* unused */
223     UNIMPL  /* unused */
224     NOARGS  { pid_t|linux_sys||gettid(void); }
225     UNIMPL  readahead
226     NOARGS  { int|netbsd32||setxattr(netbsd32_charp path, \
                   netbsd32_charp name, netbsd32_voidp value, \
                   netbsd32_size_t size, int flags); }
227     NOARGS  { int|netbsd32||lsetxattr(netbsd32_charp path, \
                   netbsd32_charp name,  netbsd32_voidp value, \
                   netbsd32_size_t size, int flags); }
228     NOARGS  { int|netbsd32||fsetxattr(int fd, netbsd32_charp name, \
                   netbsd32_voidp value, netbsd32_size_t size, int flags); }
229     NOARGS  { ssize_t|netbsd32||getxattr(netbsd32_charp path, \
                   netbsd32_charp name, netbsd32_voidp value, \
                   netbsd32_size_t size); }
230     NOARGS  { ssize_t|netbsd32||lgetxattr(netbsd32_charp path, \
                   netbsd32_charp name, netbsd32_voidp value, \
                   netbsd32_size_t size); }
231     NOARGS  { ssize_t|netbsd32||fgetxattr(int fd, netbsd32_charp name, \
                   netbsd32_voidp value, netbsd32_size_t size); }
232     NOARGS  { ssize_t|netbsd32||listxattr(netbsd32_charp path, \
                   netbsd32_charp list, netbsd32_size_t size); }
233     NOARGS  { ssize_t|netbsd32||llistxattr(netbsd32_charp path, \
                   netbsd32_charp list, netbsd32_size_t size); }
234     NOARGS  { ssize_t|netbsd32||flistxattr(int fd, netbsd32_charp list, \
                   netbsd32_size_t size); }
235     NOARGS  { int|netbsd32||removexattr(netbsd32_charp path, \
                   netbsd32_charp name); }
236     NOARGS  { int|netbsd32||lremovexattr(netbsd32_charp path, \
                   netbsd32_charp name); }
237     NOARGS  { int|netbsd32||fremovexattr(int fd, netbsd32_charp name); }
238     STD     { int|linux32_sys||tkill(int tid, int sig); }
239     UNIMPL  sendfile64
240     STD     { int|linux32_sys||futex(linux32_intp_t uaddr, int op, \
                   int val, linux32_timespecp_t timeout, \
                   linux32_intp_t uaddr2, int val3); }
241     STD     { int|linux32_sys||sched_setaffinity(pid_t pid, \
                   unsigned int len, linux32_ulongp_t mask); }
242     STD     { int|linux32_sys||sched_getaffinity(pid_t pid, \
                   unsigned int len, linux32_ulongp_t mask); }
243     UNIMPL  io_setup
244     UNIMPL  io_destroy
245     UNIMPL  io_getevents
246     UNIMPL  io_submit
247     UNIMPL  io_cancel
248     STD     { int|linux32_sys||exit_group(int error_code); }
249     UNIMPL  lookup_dcookie
250     UNIMPL  epoll_create
251     UNIMPL  epoll_ctl
252     UNIMPL  epoll_wait
253     UNIMPL  remap_file_pages
254     UNIMPL  set_thread_area
255     UNIMPL  get_thread_area
256     STD     { int|linux32_sys||set_tid_address(linux32_intp_t tid); }
257     STD     { int|linux32_sys||timer_create(clockid_t clockid, \
                   struct linux32_sigevent *evp, timer_t *timerid); }
258     STD     { int|linux32_sys||timer_settime(timer_t timerid, \
                   int flags, const struct linux32_itimerspec *tim, \
                   struct linux32_itimerspec *otim); }
259     STD     { int|linux32_sys||timer_gettime(timer_t timerid, \
                   struct linux32_itimerspec *tim); }
260     NOARGS  { int|sys||timer_getoverrun(timer_t timerid); }
261     NOARGS  { int|sys||timer_delete(timer_t timerid); }
262     STD     { int|linux32_sys||clock_settime(clockid_t which, \
                   linux32_timespecp_t tp); }
263     STD     { int|linux32_sys||clock_gettime(clockid_t which, \
                   linux32_timespecp_t tp); }
264     STD     { int|linux32_sys||clock_getres(clockid_t which, \
                   linux32_timespecp_t tp); }
265     STD     { int|linux32_sys||clock_nanosleep(clockid_t which, int flags, \
                   linux32_timespecp_t rqtp, linux32_timespecp_t rmtp); }
266     STD     { int|linux32_sys||statfs64(netbsd32_charp path, \
                   netbsd32_size_t sz, linux32_statfs64p sp); }
267     STD     { int|linux32_sys||fstatfs64(int fd, \
                   netbsd32_size_t sz, linux32_statfs64p sp); }
268     STD     { int|linux32_sys||tgkill(int tgid, int tid, int sig); }
269     NOARGS  { int|compat_50_netbsd32||utimes(netbsd32_charp path, \
                   netbsd32_timeval50p_t tptr); }
270     STD     { int|linux32_sys||fadvise64_64(int fd, uint32_t offlo, \
                   uint32_t offhi, uint32_t lenlo, uint32_t lenhi, \
                   int advice); }
271     UNIMPL  pciconfig_iobase
272     UNIMPL  pciconfig_read
273     UNIMPL  pciconfig_write
274     UNIMPL  mq_open
275     UNIMPL  mq_unlink
276     UNIMPL  mq_timedsend
277     UNIMPL  mq_timedreceive
278     UNIMPL  mq_notify
279     UNIMPL  mq_getsetattr
280     UNIMPL  waitid
281     NOARGS  { int|linux32_sys||socket(int domain, int type, \
                   int protocol); }
282     NOARGS  { int|linux32_sys||bind(int s, netbsd32_osockaddrp_t name, \
                   int namelen); }
283     NOARGS  { int|linux32_sys||connect(int s, netbsd32_osockaddrp_t name, \
                   int namelen); }
284     UNIMPL  listen
285     NOARGS  { int|linux32_sys||accept(int s, netbsd32_osockaddrp_t name, \
                   netbsd32_intp anamelen); }
286     NOARGS  { int|linux32_sys||getsockname(int fdec, netbsd32_charp asa, \
                   netbsd32_intp alen); }
287     NOARGS  { int|linux32_sys||getpeername(int fdes, \
                   netbsd32_sockaddrp_t asa, netbsd32_intp alen); }
288     NOARGS  { int|linux32_sys||socketpair(int domain, int type, \
                   int protocol, netbsd32_intp rsv); }
289     NOARGS  { int|linux32_sys||send(int s, netbsd32_voidp buf, int len, \
                   int flags); }
290     NOARGS  { int|linux32_sys||sendto(int s, netbsd32_voidp msg, int len, \
                   int flags, netbsd32_osockaddrp_t to, int tolen); }
291     NOARGS  { int|linux32_sys||recv(int s, netbsd32_voidp buf, int len, \
                   int flags); }
292     NOARGS  { int|linux32_sys||recvfrom(int s, netbsd32_voidp buf, \
                   netbsd32_size_t len, int flags, \
                   netbsd32_osockaddrp_t from, netbsd32_intp fromlenaddr); }
293     UNIMPL  shutdown
294     NOARGS  { int|linux32_sys||setsockopt(int s, int level, int optname, \
                   netbsd32_voidp optval, int optlen); }
295     NOARGS  { int|linux32_sys||getsockopt(int s, int level, int optname, \
                   netbsd32_voidp optval, netbsd32_intp optlen); }
296     UNIMPL  sendmsg
297     UNIMPL  recvmsg
298     UNIMPL  semop
299     UNIMPL  semget
300     UNIMPL  semctl
301     UNIMPL  msgsnd
302     UNIMPL  msgrcv
303     UNIMPL  msgget
304     UNIMPL  msgctl
305     UNIMPL  shmat
306     UNIMPL  shmdt
307     UNIMPL  shmget
308     UNIMPL  shmctl
309     UNIMPL  add_key
310     UNIMPL  request_key
311     UNIMPL  keyctl
312     UNIMPL  semtimedop
313     UNIMPL  vserver
314     UNIMPL  ioptio_set
315     UNIMPL  ioptio_get
316     UNIMPL  inotify_init
317     UNIMPL  inotify_add_watch
318     UNIMPL  inotify_rm_watch
319     UNIMPL  mbind
320     UNIMPL  get_mempolicy
321     UNIMPL  set_mempolicy
322     STD     { int|linux32_sys||openat(int fd, netbsd32_charp path, \
                   int flags, ... linux_umode_t mode); }
323     NOARGS  { int|netbsd32||mkdirat(int fd, netbsd32_charp path, \
                   linux_umode_t mode); }
324     STD     { int|linux32_sys||mknodat(int fd, netbsd32_charp path, \
                   linux_umode_t mode, unsigned dev); }
325     STD     { int|linux32_sys||fchownat(int fd, netbsd32_charp path, \
                   uid_t owner, gid_t group, int flag); }
326     UNIMPL  futimesat
327     STD     { int|linux32_sys||fstatat64(int fd, netbsd32_charp path, \
                   linux32_stat64p sp, int flag); }
328     STD     { int|linux32_sys||unlinkat(int fd, netbsd32_charp path, \
                   int flag); }
329     NOARGS  { int|netbsd32||renameat(int fromfd, netbsd32_charp from, \
                   int tofd, netbsd32_charp to); }
330     STD     { int|linux32_sys||linkat(int fd1, netbsd32_charp name1, \
                   int fd2, netbsd32_charp name2, int flags); }
331     NOARGS  { int|netbsd32||symlinkat(netbsd32_charp path1, int fd, \
                   netbsd32_charp path2); }
332     NOARGS  { int|netbsd32||readlinkat(int fd, netbsd32_charp path, \
                   netbsd32_charp buf, linux32_size_t bufsize); }
333     STD     { int|linux32_sys||fchmodat(int fd, netbsd32_charp path, \
                   linux_umode_t mode); }
334     STD     { int|linux32_sys||faccessat(int fd, netbsd32_charp path, \
                   int amode); }
335     STD     { int|linux32_sys||pselect6(int nfds, \
                  netbsd32_fd_setp_t readfds, \
                  netbsd32_fd_setp_t writefds, \
                  netbsd32_fd_setp_t exceptfds, \
                  linux32_timespecp_t timeout, \
                  linux32_sized_sigsetp_t ss); }
336     STD     { int|linux32_sys||ppoll(netbsd32_pollfdp_t fds, u_int nfds, \
                   linux32_timespecp_t timeout, linux32_sigsetp_t sigset); }
337     UNIMPL  unshare
               ;
               ; The netbsd32 native robust list calls have different
               ; argument names / types, but they are ABI-compatible
               ; with linux32.
               ;
338     NOARGS  { int|netbsd32||__futex_set_robust_list( \
                   netbsd32_voidp head, netbsd32_size_t len); }
339     NOARGS  { int|netbsd32||__futex_get_robust_list(lwpid_t lwpid, \
                   netbsd32_voidp headp, netbsd32_size_tp lenp); }
340     UNIMPL  splice
341     UNIMPL  sync_file_range
342     UNIMPL  tee
343     UNIMPL  vmsplice
344     UNIMPL  move_pages
345     UNIMPL  getcpu
346     UNIMPL  epoll_wait
347     UNIMPL  kexec_load
348     STD     { int|linux32_sys||utimensat(int fd, netbsd32_charp path, \
                           linux32_timespecp_t times, int flag); }
349     UNIMPL  signalfd
350     NOARGS  { int|linux_sys||timerfd_create(clockid_t clock_id, \
                   int flags); }
351     STD     { int|linux32_sys||eventfd(unsigned int initval); }
352     STD     { int|linux32_sys||fallocate(int fd, int mode, \
                           off_t offset, off_t len); }
353     STD     { int|linux32_sys||timerfd_settime(int fd, int flags, \
                   const struct linux32_itimerspec *tim, \
                   struct linux32_itimerspec *otim); }
354     STD     { int|linux32_sys||timerfd_gettime(int fd, \
                   struct linux32_itimerspec *tim); }
355     UNIMPL  signalfd4
356     STD     { int|linux32_sys||eventfd2(unsigned int initval, \
                   int flags); }
357     UNIMPL  epoll_create1
358     STD     { int|linux32_sys||dup3(int from, int to, int flags); }
359     STD     { int|linux32_sys||pipe2(netbsd32_intp fd, int flags); }
360     UNIMPL  inotify_init1
361     STD     { int|linux32_sys||preadv(int fd, \
                   const netbsd32_iovecp_t iovp, int iovcnt, \
                   netbsd32_u_long off_lo, netbsd32_u_long off_hi); }
362     STD     { int|linux32_sys||pwritev(int fd, \
                   const netbsd32_iovecp_t iovp, int iovcnt, \
                   netbsd32_u_long off_lo, netbsd32_u_long off_hi); }
363     UNIMPL  rt_tgsigqueueinfo
364     UNIMPL  perf_counter_open
365     UNIMPL  recvmmsg
366     UNIMPL  accept4
367     UNIMPL  fanotify_init
368     UNIMPL  fanotify_mark
369     STD     { int|linux32_sys||prlimit64(pid_t pid, int which, \
                   netbsd32_rlimitp_t new_rlp, netbsd32_rlimitp_t old_rlp); }
370     UNIMPL  name_to_handle_at
371     UNIMPL  open_by_handle_at
372     UNIMPL  clock_adjtime
373     UNIMPL  syncfs
374     UNIMPL  sendmmsg
375     UNIMPL  setns
376     UNIMPL  process_vm_readv
377     UNIMPL  process_vm_writev
378     UNIMPL  kcmp
379     UNIMPL  finit_module
380     UNIMPL  sched_setattr
381     UNIMPL  sched_getattr
382     UNIMPL  renameat2
383     UNIMPL  seccomp
384     NOARGS  { netbsd32_ssize_t|netbsd32||getrandom( \
                   netbsd32_voidp buf, netbsd32_size_t buflen, \
                   unsigned int flags); }
385     UNIMPL  memfd_create
386     UNIMPL  bpf
387     UNIMPL  execveat
388     UNIMPL  userfaultfd
389     UNIMPL  membarrier
390     UNIMPL  mlock2
391     UNIMPL  copy_file_range
392     UNIMPL  preadv2
393     UNIMPL  pwritev2
394     UNIMPL  pkey_mprotect
395     UNIMPL  pkey_alloc
396     UNIMPL  pkey_free
397     STD     { int|linux32_sys||statx(int fd, netbsd32_charp path, \
                   int flag, unsigned int mask, linux32_statxp sp); }
398     UNIMPL  rseq
399     UNIMPL  io_pgetevents
400     UNIMPL  migrate_pages
401     UNIMPL  kexec_file_load
402     UNIMPL  /* unused */
403     UNIMPL  clock_gettime64
404     UNIMPL  clock_settime64
405     UNIMPL  clock_adjtime64
406     UNIMPL  clock_getres_time64
407     UNIMPL  clock_nanosleep_time64
408     UNIMPL  timer_gettime64
409     UNIMPL  timer_settime64
410     UNIMPL  timerfd_gettime64
411     UNIMPL  timerfd_settime64
412     UNIMPL  utimensat_time64
413     UNIMPL  pselect6_time64
414     UNIMPL  ppoll_time64
415     UNIMPL  /* unused? */
416     UNIMPL  io_pgetevents_time64
417     UNIMPL  recvmmsg_time64
418     UNIMPL  mq_timedsend_time64
419     UNIMPL  mq_timedreceive_time64
420     UNIMPL  semtimedop_time64
421     UNIMPL  rt_sigtimedwait_time64
422     UNIMPL  futex_time64
423     UNIMPL  sched_rr_get_interval_time64
424     UNIMPL  pidfd_send_signal
425     UNIMPL  io_uring_setup
426     UNIMPL  io_uring_enter
427     UNIMPL  io_uring_register
428     UNIMPL  open_tree
429     UNIMPL  move_mount
430     UNIMPL  fsopen
431     UNIMPL  fsconfig
432     UNIMPL  fsmount
433     UNIMPL  fspick
434     UNIMPL  pidfd_open
435     UNIMPL  clone3
436     UNIMPL  close_range
437     UNIMPL  openat2
438     UNIMPL  pidfd_getfd
439     UNIMPL  faccessat2
440     UNIMPL  process_madvise
441     UNIMPL  epoll_pwait2
442     UNIMPL  mount_setattr
443     UNIMPL  quotactl_fd
444     UNIMPL  landlock_create_ruleset
445     UNIMPL  landlock_add_rule
446     UNIMPL  landlock_restrict_self
447     UNIMPL
448     UNIMPL
449     UNIMPL
450     UNIMPL
451     UNIMPL
452     UNIMPL
453     UNIMPL
454     UNIMPL
455     UNIMPL
456     UNIMPL
457     UNIMPL
458     UNIMPL
459     UNIMPL
460     UNIMPL
461     UNIMPL
462     UNIMPL
463     UNIMPL
464     UNIMPL
465     UNIMPL
466     UNIMPL
467     UNIMPL
468     UNIMPL
469     UNIMPL
470     UNIMPL
471     UNIMPL
472     UNIMPL
473     UNIMPL
474     UNIMPL
475     UNIMPL
476     UNIMPL
477     UNIMPL
478     UNIMPL
479     UNIMPL

;
; EABI ARMLinux actually has two ranges of syscalls. Normal syscalls use
; SVC numbers starting at 0 (__NR_SYSCALL_BASE), Special ARM-specific syscalls
; use SVC numbers starting at 0x0f0000 (__ARM_NR_BASE).
; $SRC/sys/arch/aarch64/aarch64/linux32_syscall.c remaps these down to 480-,
; So that we can use one linux_sysent array for the whole lot.
;
; If the linux's normal syscall is increased to more than 480, this needs to be
; changed. Also note the overall size as defined in syscalls.conf. (nsysent=512)
;
; see also:
;  $LINUXSRC/arch/arm/include/uapi/asm/unistd.h
;  $LINUXSRC/arch/arm/kernel/traps.c:arm_syscall()
;
480     UNIMPL  /* base. actually 0x0f0000 */
481     UNIMPL  breakpoint
482     UNIMPL  cacheflush
483     UNIMPL  usr26
484     UNIMPL  usr32
485     STD     { int|linux32_sys||set_tls(netbsd32_voidp tls); }
486     STD     { linux32_off_t|linux32_sys||get_tls(void); }