AArch64: Autogenerated syscalls for AArch64
This patch adds AArch64 syscalls, autogenerated using:
./libc/tools/gensyscalls.py
Change-Id: I1cc60430423ecb52a35448bf2c358b82136b2f16
Signed-off-by: Serban Constantinescu <serban.constantinescu@arm.com>
diff --git a/libc/arch-aarch64/syscalls.mk b/libc/arch-aarch64/syscalls.mk
new file mode 100644
index 0000000..995d44a
--- /dev/null
+++ b/libc/arch-aarch64/syscalls.mk
@@ -0,0 +1,188 @@
+# Generated by gensyscalls.py. Do not edit.
+syscall_src :=
+syscall_src += arch-aarch64/syscalls/__brk.S
+syscall_src += arch-aarch64/syscalls/__clone.S
+syscall_src += arch-aarch64/syscalls/__epoll_pwait.S
+syscall_src += arch-aarch64/syscalls/__exit.S
+syscall_src += arch-aarch64/syscalls/__getcpu.S
+syscall_src += arch-aarch64/syscalls/__getcwd.S
+syscall_src += arch-aarch64/syscalls/__getpriority.S
+syscall_src += arch-aarch64/syscalls/__ioctl.S
+syscall_src += arch-aarch64/syscalls/__openat.S
+syscall_src += arch-aarch64/syscalls/__ppoll.S
+syscall_src += arch-aarch64/syscalls/__pselect6.S
+syscall_src += arch-aarch64/syscalls/__ptrace.S
+syscall_src += arch-aarch64/syscalls/__reboot.S
+syscall_src += arch-aarch64/syscalls/__rt_sigaction.S
+syscall_src += arch-aarch64/syscalls/__rt_sigpending.S
+syscall_src += arch-aarch64/syscalls/__rt_sigprocmask.S
+syscall_src += arch-aarch64/syscalls/__rt_sigsuspend.S
+syscall_src += arch-aarch64/syscalls/__rt_sigtimedwait.S
+syscall_src += arch-aarch64/syscalls/__sched_getaffinity.S
+syscall_src += arch-aarch64/syscalls/__syslog.S
+syscall_src += arch-aarch64/syscalls/__timer_create.S
+syscall_src += arch-aarch64/syscalls/__timer_delete.S
+syscall_src += arch-aarch64/syscalls/__timer_getoverrun.S
+syscall_src += arch-aarch64/syscalls/__timer_gettime.S
+syscall_src += arch-aarch64/syscalls/__timer_settime.S
+syscall_src += arch-aarch64/syscalls/__waitid.S
+syscall_src += arch-aarch64/syscalls/_exit.S
+syscall_src += arch-aarch64/syscalls/accept.S
+syscall_src += arch-aarch64/syscalls/acct.S
+syscall_src += arch-aarch64/syscalls/bind.S
+syscall_src += arch-aarch64/syscalls/capget.S
+syscall_src += arch-aarch64/syscalls/capset.S
+syscall_src += arch-aarch64/syscalls/chdir.S
+syscall_src += arch-aarch64/syscalls/chroot.S
+syscall_src += arch-aarch64/syscalls/clock_getres.S
+syscall_src += arch-aarch64/syscalls/clock_gettime.S
+syscall_src += arch-aarch64/syscalls/clock_nanosleep.S
+syscall_src += arch-aarch64/syscalls/clock_settime.S
+syscall_src += arch-aarch64/syscalls/close.S
+syscall_src += arch-aarch64/syscalls/connect.S
+syscall_src += arch-aarch64/syscalls/delete_module.S
+syscall_src += arch-aarch64/syscalls/dup.S
+syscall_src += arch-aarch64/syscalls/dup3.S
+syscall_src += arch-aarch64/syscalls/epoll_create1.S
+syscall_src += arch-aarch64/syscalls/epoll_ctl.S
+syscall_src += arch-aarch64/syscalls/eventfd.S
+syscall_src += arch-aarch64/syscalls/execve.S
+syscall_src += arch-aarch64/syscalls/faccessat.S
+syscall_src += arch-aarch64/syscalls/fchdir.S
+syscall_src += arch-aarch64/syscalls/fchmod.S
+syscall_src += arch-aarch64/syscalls/fchmodat.S
+syscall_src += arch-aarch64/syscalls/fchown.S
+syscall_src += arch-aarch64/syscalls/fchownat.S
+syscall_src += arch-aarch64/syscalls/fcntl.S
+syscall_src += arch-aarch64/syscalls/fdatasync.S
+syscall_src += arch-aarch64/syscalls/fgetxattr.S
+syscall_src += arch-aarch64/syscalls/flistxattr.S
+syscall_src += arch-aarch64/syscalls/flock.S
+syscall_src += arch-aarch64/syscalls/fremovexattr.S
+syscall_src += arch-aarch64/syscalls/fsetxattr.S
+syscall_src += arch-aarch64/syscalls/fstat.S
+syscall_src += arch-aarch64/syscalls/fstatat.S
+syscall_src += arch-aarch64/syscalls/fstatfs.S
+syscall_src += arch-aarch64/syscalls/fsync.S
+syscall_src += arch-aarch64/syscalls/ftruncate.S
+syscall_src += arch-aarch64/syscalls/futex.S
+syscall_src += arch-aarch64/syscalls/getdents.S
+syscall_src += arch-aarch64/syscalls/getegid.S
+syscall_src += arch-aarch64/syscalls/geteuid.S
+syscall_src += arch-aarch64/syscalls/getgid.S
+syscall_src += arch-aarch64/syscalls/getgroups.S
+syscall_src += arch-aarch64/syscalls/getitimer.S
+syscall_src += arch-aarch64/syscalls/getpeername.S
+syscall_src += arch-aarch64/syscalls/getpgid.S
+syscall_src += arch-aarch64/syscalls/getpid.S
+syscall_src += arch-aarch64/syscalls/getppid.S
+syscall_src += arch-aarch64/syscalls/getresgid.S
+syscall_src += arch-aarch64/syscalls/getresuid.S
+syscall_src += arch-aarch64/syscalls/getrlimit.S
+syscall_src += arch-aarch64/syscalls/getrusage.S
+syscall_src += arch-aarch64/syscalls/getsid.S
+syscall_src += arch-aarch64/syscalls/getsockname.S
+syscall_src += arch-aarch64/syscalls/getsockopt.S
+syscall_src += arch-aarch64/syscalls/gettid.S
+syscall_src += arch-aarch64/syscalls/gettimeofday.S
+syscall_src += arch-aarch64/syscalls/getuid.S
+syscall_src += arch-aarch64/syscalls/getxattr.S
+syscall_src += arch-aarch64/syscalls/init_module.S
+syscall_src += arch-aarch64/syscalls/inotify_add_watch.S
+syscall_src += arch-aarch64/syscalls/inotify_init1.S
+syscall_src += arch-aarch64/syscalls/inotify_rm_watch.S
+syscall_src += arch-aarch64/syscalls/ioprio_get.S
+syscall_src += arch-aarch64/syscalls/ioprio_set.S
+syscall_src += arch-aarch64/syscalls/kill.S
+syscall_src += arch-aarch64/syscalls/klogctl.S
+syscall_src += arch-aarch64/syscalls/lgetxattr.S
+syscall_src += arch-aarch64/syscalls/linkat.S
+syscall_src += arch-aarch64/syscalls/listen.S
+syscall_src += arch-aarch64/syscalls/listxattr.S
+syscall_src += arch-aarch64/syscalls/llistxattr.S
+syscall_src += arch-aarch64/syscalls/lremovexattr.S
+syscall_src += arch-aarch64/syscalls/lseek.S
+syscall_src += arch-aarch64/syscalls/lsetxattr.S
+syscall_src += arch-aarch64/syscalls/madvise.S
+syscall_src += arch-aarch64/syscalls/mincore.S
+syscall_src += arch-aarch64/syscalls/mkdirat.S
+syscall_src += arch-aarch64/syscalls/mknodat.S
+syscall_src += arch-aarch64/syscalls/mlock.S
+syscall_src += arch-aarch64/syscalls/mlockall.S
+syscall_src += arch-aarch64/syscalls/mmap.S
+syscall_src += arch-aarch64/syscalls/mount.S
+syscall_src += arch-aarch64/syscalls/mprotect.S
+syscall_src += arch-aarch64/syscalls/mremap.S
+syscall_src += arch-aarch64/syscalls/msync.S
+syscall_src += arch-aarch64/syscalls/munlock.S
+syscall_src += arch-aarch64/syscalls/munlockall.S
+syscall_src += arch-aarch64/syscalls/munmap.S
+syscall_src += arch-aarch64/syscalls/nanosleep.S
+syscall_src += arch-aarch64/syscalls/perf_event_open.S
+syscall_src += arch-aarch64/syscalls/personality.S
+syscall_src += arch-aarch64/syscalls/pipe2.S
+syscall_src += arch-aarch64/syscalls/prctl.S
+syscall_src += arch-aarch64/syscalls/pread64.S
+syscall_src += arch-aarch64/syscalls/pwrite64.S
+syscall_src += arch-aarch64/syscalls/read.S
+syscall_src += arch-aarch64/syscalls/readahead.S
+syscall_src += arch-aarch64/syscalls/readlinkat.S
+syscall_src += arch-aarch64/syscalls/readv.S
+syscall_src += arch-aarch64/syscalls/recvfrom.S
+syscall_src += arch-aarch64/syscalls/recvmsg.S
+syscall_src += arch-aarch64/syscalls/removexattr.S
+syscall_src += arch-aarch64/syscalls/renameat.S
+syscall_src += arch-aarch64/syscalls/sched_get_priority_max.S
+syscall_src += arch-aarch64/syscalls/sched_get_priority_min.S
+syscall_src += arch-aarch64/syscalls/sched_getparam.S
+syscall_src += arch-aarch64/syscalls/sched_getscheduler.S
+syscall_src += arch-aarch64/syscalls/sched_rr_get_interval.S
+syscall_src += arch-aarch64/syscalls/sched_setaffinity.S
+syscall_src += arch-aarch64/syscalls/sched_setparam.S
+syscall_src += arch-aarch64/syscalls/sched_setscheduler.S
+syscall_src += arch-aarch64/syscalls/sched_yield.S
+syscall_src += arch-aarch64/syscalls/sendfile.S
+syscall_src += arch-aarch64/syscalls/sendmsg.S
+syscall_src += arch-aarch64/syscalls/sendto.S
+syscall_src += arch-aarch64/syscalls/setgid.S
+syscall_src += arch-aarch64/syscalls/setgroups.S
+syscall_src += arch-aarch64/syscalls/setitimer.S
+syscall_src += arch-aarch64/syscalls/setpgid.S
+syscall_src += arch-aarch64/syscalls/setpriority.S
+syscall_src += arch-aarch64/syscalls/setregid.S
+syscall_src += arch-aarch64/syscalls/setresgid.S
+syscall_src += arch-aarch64/syscalls/setresuid.S
+syscall_src += arch-aarch64/syscalls/setreuid.S
+syscall_src += arch-aarch64/syscalls/setrlimit.S
+syscall_src += arch-aarch64/syscalls/setsid.S
+syscall_src += arch-aarch64/syscalls/setsockopt.S
+syscall_src += arch-aarch64/syscalls/settimeofday.S
+syscall_src += arch-aarch64/syscalls/setuid.S
+syscall_src += arch-aarch64/syscalls/setxattr.S
+syscall_src += arch-aarch64/syscalls/shutdown.S
+syscall_src += arch-aarch64/syscalls/sigaltstack.S
+syscall_src += arch-aarch64/syscalls/signalfd4.S
+syscall_src += arch-aarch64/syscalls/socket.S
+syscall_src += arch-aarch64/syscalls/socketpair.S
+syscall_src += arch-aarch64/syscalls/statfs.S
+syscall_src += arch-aarch64/syscalls/swapoff.S
+syscall_src += arch-aarch64/syscalls/swapon.S
+syscall_src += arch-aarch64/syscalls/symlinkat.S
+syscall_src += arch-aarch64/syscalls/sync.S
+syscall_src += arch-aarch64/syscalls/sysinfo.S
+syscall_src += arch-aarch64/syscalls/tgkill.S
+syscall_src += arch-aarch64/syscalls/timerfd_create.S
+syscall_src += arch-aarch64/syscalls/timerfd_gettime.S
+syscall_src += arch-aarch64/syscalls/timerfd_settime.S
+syscall_src += arch-aarch64/syscalls/times.S
+syscall_src += arch-aarch64/syscalls/tkill.S
+syscall_src += arch-aarch64/syscalls/truncate.S
+syscall_src += arch-aarch64/syscalls/umask.S
+syscall_src += arch-aarch64/syscalls/umount2.S
+syscall_src += arch-aarch64/syscalls/uname.S
+syscall_src += arch-aarch64/syscalls/unlinkat.S
+syscall_src += arch-aarch64/syscalls/unshare.S
+syscall_src += arch-aarch64/syscalls/utimensat.S
+syscall_src += arch-aarch64/syscalls/wait4.S
+syscall_src += arch-aarch64/syscalls/write.S
+syscall_src += arch-aarch64/syscalls/writev.S
diff --git a/libc/arch-aarch64/syscalls/__brk.S b/libc/arch-aarch64/syscalls/__brk.S
new file mode 100644
index 0000000..91e5ee4
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__brk.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__brk)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_brk
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__brk)
+.hidden _C_LABEL(__brk)
diff --git a/libc/arch-aarch64/syscalls/__clone.S b/libc/arch-aarch64/syscalls/__clone.S
new file mode 100644
index 0000000..817ae58
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__clone.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__clone)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_clone
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__clone)
+.hidden _C_LABEL(__clone)
diff --git a/libc/arch-aarch64/syscalls/__epoll_pwait.S b/libc/arch-aarch64/syscalls/__epoll_pwait.S
new file mode 100644
index 0000000..b65c5a9
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__epoll_pwait.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__epoll_pwait)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_epoll_pwait
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__epoll_pwait)
+.hidden _C_LABEL(__epoll_pwait)
diff --git a/libc/arch-aarch64/syscalls/__exit.S b/libc/arch-aarch64/syscalls/__exit.S
new file mode 100644
index 0000000..7443176
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__exit.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__exit)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_exit
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__exit)
+.hidden _C_LABEL(__exit)
diff --git a/libc/arch-aarch64/syscalls/__getcpu.S b/libc/arch-aarch64/syscalls/__getcpu.S
new file mode 100644
index 0000000..907b769
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__getcpu.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__getcpu)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getcpu
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__getcpu)
+.hidden _C_LABEL(__getcpu)
diff --git a/libc/arch-aarch64/syscalls/__getcwd.S b/libc/arch-aarch64/syscalls/__getcwd.S
new file mode 100644
index 0000000..723c550
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__getcwd.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__getcwd)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getcwd
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__getcwd)
+.hidden _C_LABEL(__getcwd)
diff --git a/libc/arch-aarch64/syscalls/__getpriority.S b/libc/arch-aarch64/syscalls/__getpriority.S
new file mode 100644
index 0000000..c0df90f
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__getpriority.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__getpriority)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getpriority
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__getpriority)
+.hidden _C_LABEL(__getpriority)
diff --git a/libc/arch-aarch64/syscalls/__ioctl.S b/libc/arch-aarch64/syscalls/__ioctl.S
new file mode 100644
index 0000000..be1ae0d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__ioctl.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__ioctl)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_ioctl
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__ioctl)
+.hidden _C_LABEL(__ioctl)
diff --git a/libc/arch-aarch64/syscalls/__openat.S b/libc/arch-aarch64/syscalls/__openat.S
new file mode 100644
index 0000000..4a81443
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__openat.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__openat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_openat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__openat)
+.hidden _C_LABEL(__openat)
diff --git a/libc/arch-aarch64/syscalls/__ppoll.S b/libc/arch-aarch64/syscalls/__ppoll.S
new file mode 100644
index 0000000..985a569
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__ppoll.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__ppoll)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_ppoll
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__ppoll)
+.hidden _C_LABEL(__ppoll)
diff --git a/libc/arch-aarch64/syscalls/__pselect6.S b/libc/arch-aarch64/syscalls/__pselect6.S
new file mode 100644
index 0000000..1f38048
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__pselect6.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__pselect6)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_pselect6
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__pselect6)
+.hidden _C_LABEL(__pselect6)
diff --git a/libc/arch-aarch64/syscalls/__ptrace.S b/libc/arch-aarch64/syscalls/__ptrace.S
new file mode 100644
index 0000000..5084dbe
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__ptrace.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__ptrace)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_ptrace
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__ptrace)
+.hidden _C_LABEL(__ptrace)
diff --git a/libc/arch-aarch64/syscalls/__reboot.S b/libc/arch-aarch64/syscalls/__reboot.S
new file mode 100644
index 0000000..80cb855
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__reboot.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__reboot)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_reboot
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__reboot)
+.hidden _C_LABEL(__reboot)
diff --git a/libc/arch-aarch64/syscalls/__rt_sigaction.S b/libc/arch-aarch64/syscalls/__rt_sigaction.S
new file mode 100644
index 0000000..82dc79e
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__rt_sigaction.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__rt_sigaction)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_rt_sigaction
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__rt_sigaction)
+.hidden _C_LABEL(__rt_sigaction)
diff --git a/libc/arch-aarch64/syscalls/__rt_sigpending.S b/libc/arch-aarch64/syscalls/__rt_sigpending.S
new file mode 100644
index 0000000..ace2866
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__rt_sigpending.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__rt_sigpending)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_rt_sigpending
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__rt_sigpending)
+.hidden _C_LABEL(__rt_sigpending)
diff --git a/libc/arch-aarch64/syscalls/__rt_sigprocmask.S b/libc/arch-aarch64/syscalls/__rt_sigprocmask.S
new file mode 100644
index 0000000..31ee86f
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__rt_sigprocmask.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__rt_sigprocmask)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_rt_sigprocmask
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__rt_sigprocmask)
+.hidden _C_LABEL(__rt_sigprocmask)
diff --git a/libc/arch-aarch64/syscalls/__rt_sigsuspend.S b/libc/arch-aarch64/syscalls/__rt_sigsuspend.S
new file mode 100644
index 0000000..58f711c
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__rt_sigsuspend.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__rt_sigsuspend)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_rt_sigsuspend
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__rt_sigsuspend)
+.hidden _C_LABEL(__rt_sigsuspend)
diff --git a/libc/arch-aarch64/syscalls/__rt_sigtimedwait.S b/libc/arch-aarch64/syscalls/__rt_sigtimedwait.S
new file mode 100644
index 0000000..748d81b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__rt_sigtimedwait.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__rt_sigtimedwait)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_rt_sigtimedwait
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__rt_sigtimedwait)
+.hidden _C_LABEL(__rt_sigtimedwait)
diff --git a/libc/arch-aarch64/syscalls/__sched_getaffinity.S b/libc/arch-aarch64/syscalls/__sched_getaffinity.S
new file mode 100644
index 0000000..76c51b0
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__sched_getaffinity.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__sched_getaffinity)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_getaffinity
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__sched_getaffinity)
+.hidden _C_LABEL(__sched_getaffinity)
diff --git a/libc/arch-aarch64/syscalls/__syslog.S b/libc/arch-aarch64/syscalls/__syslog.S
new file mode 100644
index 0000000..379926d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__syslog.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__syslog)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_syslog
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__syslog)
+.hidden _C_LABEL(__syslog)
diff --git a/libc/arch-aarch64/syscalls/__timer_create.S b/libc/arch-aarch64/syscalls/__timer_create.S
new file mode 100644
index 0000000..cebae7a
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__timer_create.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__timer_create)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_timer_create
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__timer_create)
+.hidden _C_LABEL(__timer_create)
diff --git a/libc/arch-aarch64/syscalls/__timer_delete.S b/libc/arch-aarch64/syscalls/__timer_delete.S
new file mode 100644
index 0000000..06a2ca7
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__timer_delete.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__timer_delete)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_timer_delete
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__timer_delete)
+.hidden _C_LABEL(__timer_delete)
diff --git a/libc/arch-aarch64/syscalls/__timer_getoverrun.S b/libc/arch-aarch64/syscalls/__timer_getoverrun.S
new file mode 100644
index 0000000..3e6fbb7
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__timer_getoverrun.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__timer_getoverrun)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_timer_getoverrun
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__timer_getoverrun)
+.hidden _C_LABEL(__timer_getoverrun)
diff --git a/libc/arch-aarch64/syscalls/__timer_gettime.S b/libc/arch-aarch64/syscalls/__timer_gettime.S
new file mode 100644
index 0000000..41cfcfb
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__timer_gettime.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__timer_gettime)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_timer_gettime
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__timer_gettime)
+.hidden _C_LABEL(__timer_gettime)
diff --git a/libc/arch-aarch64/syscalls/__timer_settime.S b/libc/arch-aarch64/syscalls/__timer_settime.S
new file mode 100644
index 0000000..474c98e
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__timer_settime.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__timer_settime)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_timer_settime
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__timer_settime)
+.hidden _C_LABEL(__timer_settime)
diff --git a/libc/arch-aarch64/syscalls/__waitid.S b/libc/arch-aarch64/syscalls/__waitid.S
new file mode 100644
index 0000000..62445ae
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/__waitid.S
@@ -0,0 +1,24 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(__waitid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_waitid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(__waitid)
+.hidden _C_LABEL(__waitid)
diff --git a/libc/arch-aarch64/syscalls/_exit.S b/libc/arch-aarch64/syscalls/_exit.S
new file mode 100644
index 0000000..9f5644a
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/_exit.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(_exit)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_exit_group
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(_exit)
diff --git a/libc/arch-aarch64/syscalls/accept.S b/libc/arch-aarch64/syscalls/accept.S
new file mode 100644
index 0000000..add85c8
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/accept.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(accept)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_accept
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(accept)
diff --git a/libc/arch-aarch64/syscalls/acct.S b/libc/arch-aarch64/syscalls/acct.S
new file mode 100644
index 0000000..ab4b30d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/acct.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(acct)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_acct
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(acct)
diff --git a/libc/arch-aarch64/syscalls/bind.S b/libc/arch-aarch64/syscalls/bind.S
new file mode 100644
index 0000000..28f192b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/bind.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(bind)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_bind
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(bind)
diff --git a/libc/arch-aarch64/syscalls/capget.S b/libc/arch-aarch64/syscalls/capget.S
new file mode 100644
index 0000000..fbe2685
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/capget.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(capget)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_capget
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(capget)
diff --git a/libc/arch-aarch64/syscalls/capset.S b/libc/arch-aarch64/syscalls/capset.S
new file mode 100644
index 0000000..2677b1e
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/capset.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(capset)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_capset
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(capset)
diff --git a/libc/arch-aarch64/syscalls/chdir.S b/libc/arch-aarch64/syscalls/chdir.S
new file mode 100644
index 0000000..5480043
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/chdir.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(chdir)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_chdir
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(chdir)
diff --git a/libc/arch-aarch64/syscalls/chroot.S b/libc/arch-aarch64/syscalls/chroot.S
new file mode 100644
index 0000000..38ed61e
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/chroot.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(chroot)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_chroot
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(chroot)
diff --git a/libc/arch-aarch64/syscalls/clock_getres.S b/libc/arch-aarch64/syscalls/clock_getres.S
new file mode 100644
index 0000000..f142134
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/clock_getres.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(clock_getres)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_clock_getres
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(clock_getres)
diff --git a/libc/arch-aarch64/syscalls/clock_gettime.S b/libc/arch-aarch64/syscalls/clock_gettime.S
new file mode 100644
index 0000000..c7581cd
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/clock_gettime.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(clock_gettime)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_clock_gettime
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(clock_gettime)
diff --git a/libc/arch-aarch64/syscalls/clock_nanosleep.S b/libc/arch-aarch64/syscalls/clock_nanosleep.S
new file mode 100644
index 0000000..b942bcc
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/clock_nanosleep.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(clock_nanosleep)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_clock_nanosleep
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(clock_nanosleep)
diff --git a/libc/arch-aarch64/syscalls/clock_settime.S b/libc/arch-aarch64/syscalls/clock_settime.S
new file mode 100644
index 0000000..ad8b102
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/clock_settime.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(clock_settime)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_clock_settime
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(clock_settime)
diff --git a/libc/arch-aarch64/syscalls/close.S b/libc/arch-aarch64/syscalls/close.S
new file mode 100644
index 0000000..0943cfc
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/close.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(close)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_close
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(close)
diff --git a/libc/arch-aarch64/syscalls/connect.S b/libc/arch-aarch64/syscalls/connect.S
new file mode 100644
index 0000000..4b83c95
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/connect.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(connect)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_connect
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(connect)
diff --git a/libc/arch-aarch64/syscalls/delete_module.S b/libc/arch-aarch64/syscalls/delete_module.S
new file mode 100644
index 0000000..ab471ce
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/delete_module.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(delete_module)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_delete_module
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(delete_module)
diff --git a/libc/arch-aarch64/syscalls/dup.S b/libc/arch-aarch64/syscalls/dup.S
new file mode 100644
index 0000000..1aa9162
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/dup.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(dup)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_dup
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(dup)
diff --git a/libc/arch-aarch64/syscalls/dup3.S b/libc/arch-aarch64/syscalls/dup3.S
new file mode 100644
index 0000000..8bb5925
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/dup3.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(dup3)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_dup3
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(dup3)
diff --git a/libc/arch-aarch64/syscalls/epoll_create1.S b/libc/arch-aarch64/syscalls/epoll_create1.S
new file mode 100644
index 0000000..2f38b5d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/epoll_create1.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(epoll_create1)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_epoll_create1
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(epoll_create1)
diff --git a/libc/arch-aarch64/syscalls/epoll_ctl.S b/libc/arch-aarch64/syscalls/epoll_ctl.S
new file mode 100644
index 0000000..eacf78c
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/epoll_ctl.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(epoll_ctl)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_epoll_ctl
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(epoll_ctl)
diff --git a/libc/arch-aarch64/syscalls/eventfd.S b/libc/arch-aarch64/syscalls/eventfd.S
new file mode 100644
index 0000000..6890b01
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/eventfd.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(eventfd)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_eventfd2
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(eventfd)
diff --git a/libc/arch-aarch64/syscalls/execve.S b/libc/arch-aarch64/syscalls/execve.S
new file mode 100644
index 0000000..63aaece
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/execve.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(execve)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_execve
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(execve)
diff --git a/libc/arch-aarch64/syscalls/faccessat.S b/libc/arch-aarch64/syscalls/faccessat.S
new file mode 100644
index 0000000..20ac348
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/faccessat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(faccessat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_faccessat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(faccessat)
diff --git a/libc/arch-aarch64/syscalls/fchdir.S b/libc/arch-aarch64/syscalls/fchdir.S
new file mode 100644
index 0000000..514b139
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fchdir.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fchdir)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fchdir
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fchdir)
diff --git a/libc/arch-aarch64/syscalls/fchmod.S b/libc/arch-aarch64/syscalls/fchmod.S
new file mode 100644
index 0000000..c5345e3
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fchmod.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fchmod)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fchmod
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fchmod)
diff --git a/libc/arch-aarch64/syscalls/fchmodat.S b/libc/arch-aarch64/syscalls/fchmodat.S
new file mode 100644
index 0000000..02a7f59
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fchmodat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fchmodat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fchmodat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fchmodat)
diff --git a/libc/arch-aarch64/syscalls/fchown.S b/libc/arch-aarch64/syscalls/fchown.S
new file mode 100644
index 0000000..adaf5f4
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fchown.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fchown)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fchown
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fchown)
diff --git a/libc/arch-aarch64/syscalls/fchownat.S b/libc/arch-aarch64/syscalls/fchownat.S
new file mode 100644
index 0000000..2762c6c
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fchownat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fchownat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fchownat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fchownat)
diff --git a/libc/arch-aarch64/syscalls/fcntl.S b/libc/arch-aarch64/syscalls/fcntl.S
new file mode 100644
index 0000000..5c78747
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fcntl.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fcntl)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fcntl
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fcntl)
diff --git a/libc/arch-aarch64/syscalls/fdatasync.S b/libc/arch-aarch64/syscalls/fdatasync.S
new file mode 100644
index 0000000..55fe848
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fdatasync.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fdatasync)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fdatasync
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fdatasync)
diff --git a/libc/arch-aarch64/syscalls/fgetxattr.S b/libc/arch-aarch64/syscalls/fgetxattr.S
new file mode 100644
index 0000000..a73fce9
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fgetxattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fgetxattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fgetxattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fgetxattr)
diff --git a/libc/arch-aarch64/syscalls/flistxattr.S b/libc/arch-aarch64/syscalls/flistxattr.S
new file mode 100644
index 0000000..e52d1fd
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/flistxattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(flistxattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_flistxattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(flistxattr)
diff --git a/libc/arch-aarch64/syscalls/flock.S b/libc/arch-aarch64/syscalls/flock.S
new file mode 100644
index 0000000..091c34b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/flock.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(flock)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_flock
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(flock)
diff --git a/libc/arch-aarch64/syscalls/fremovexattr.S b/libc/arch-aarch64/syscalls/fremovexattr.S
new file mode 100644
index 0000000..3801f2e
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fremovexattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fremovexattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fremovexattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fremovexattr)
diff --git a/libc/arch-aarch64/syscalls/fsetxattr.S b/libc/arch-aarch64/syscalls/fsetxattr.S
new file mode 100644
index 0000000..61170e6
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fsetxattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fsetxattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fsetxattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fsetxattr)
diff --git a/libc/arch-aarch64/syscalls/fstat.S b/libc/arch-aarch64/syscalls/fstat.S
new file mode 100644
index 0000000..09de2e5
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fstat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fstat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fstat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fstat)
diff --git a/libc/arch-aarch64/syscalls/fstatat.S b/libc/arch-aarch64/syscalls/fstatat.S
new file mode 100644
index 0000000..b668a19
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fstatat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fstatat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_newfstatat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fstatat)
diff --git a/libc/arch-aarch64/syscalls/fstatfs.S b/libc/arch-aarch64/syscalls/fstatfs.S
new file mode 100644
index 0000000..4b179e8
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fstatfs.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fstatfs)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fstatfs
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fstatfs)
diff --git a/libc/arch-aarch64/syscalls/fsync.S b/libc/arch-aarch64/syscalls/fsync.S
new file mode 100644
index 0000000..a493f46
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/fsync.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(fsync)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_fsync
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(fsync)
diff --git a/libc/arch-aarch64/syscalls/ftruncate.S b/libc/arch-aarch64/syscalls/ftruncate.S
new file mode 100644
index 0000000..3e578a6
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/ftruncate.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(ftruncate)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_ftruncate
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(ftruncate)
+
+ .globl _C_LABEL(ftruncate64)
+ .equ _C_LABEL(ftruncate64), _C_LABEL(ftruncate)
diff --git a/libc/arch-aarch64/syscalls/futex.S b/libc/arch-aarch64/syscalls/futex.S
new file mode 100644
index 0000000..d014414
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/futex.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(futex)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_futex
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(futex)
diff --git a/libc/arch-aarch64/syscalls/getdents.S b/libc/arch-aarch64/syscalls/getdents.S
new file mode 100644
index 0000000..3af99ce
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getdents.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getdents)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getdents64
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getdents)
diff --git a/libc/arch-aarch64/syscalls/getegid.S b/libc/arch-aarch64/syscalls/getegid.S
new file mode 100644
index 0000000..5c12eb8
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getegid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getegid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getegid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getegid)
diff --git a/libc/arch-aarch64/syscalls/geteuid.S b/libc/arch-aarch64/syscalls/geteuid.S
new file mode 100644
index 0000000..23ccc9a
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/geteuid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(geteuid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_geteuid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(geteuid)
diff --git a/libc/arch-aarch64/syscalls/getgid.S b/libc/arch-aarch64/syscalls/getgid.S
new file mode 100644
index 0000000..21ae633
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getgid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getgid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getgid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getgid)
diff --git a/libc/arch-aarch64/syscalls/getgroups.S b/libc/arch-aarch64/syscalls/getgroups.S
new file mode 100644
index 0000000..3c6987b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getgroups.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getgroups)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getgroups
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getgroups)
diff --git a/libc/arch-aarch64/syscalls/getitimer.S b/libc/arch-aarch64/syscalls/getitimer.S
new file mode 100644
index 0000000..b02ae75
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getitimer.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getitimer)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getitimer
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getitimer)
diff --git a/libc/arch-aarch64/syscalls/getpeername.S b/libc/arch-aarch64/syscalls/getpeername.S
new file mode 100644
index 0000000..2cb4841
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getpeername.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getpeername)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getpeername
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getpeername)
diff --git a/libc/arch-aarch64/syscalls/getpgid.S b/libc/arch-aarch64/syscalls/getpgid.S
new file mode 100644
index 0000000..a75ac5b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getpgid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getpgid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getpgid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getpgid)
diff --git a/libc/arch-aarch64/syscalls/getpid.S b/libc/arch-aarch64/syscalls/getpid.S
new file mode 100644
index 0000000..75835da
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getpid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getpid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getpid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getpid)
diff --git a/libc/arch-aarch64/syscalls/getppid.S b/libc/arch-aarch64/syscalls/getppid.S
new file mode 100644
index 0000000..63f7758
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getppid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getppid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getppid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getppid)
diff --git a/libc/arch-aarch64/syscalls/getresgid.S b/libc/arch-aarch64/syscalls/getresgid.S
new file mode 100644
index 0000000..ec1aefb
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getresgid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getresgid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getresgid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getresgid)
diff --git a/libc/arch-aarch64/syscalls/getresuid.S b/libc/arch-aarch64/syscalls/getresuid.S
new file mode 100644
index 0000000..d0093a4
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getresuid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getresuid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getresuid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getresuid)
diff --git a/libc/arch-aarch64/syscalls/getrlimit.S b/libc/arch-aarch64/syscalls/getrlimit.S
new file mode 100644
index 0000000..713d62c
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getrlimit.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getrlimit)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getrlimit
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getrlimit)
diff --git a/libc/arch-aarch64/syscalls/getrusage.S b/libc/arch-aarch64/syscalls/getrusage.S
new file mode 100644
index 0000000..10a3c1b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getrusage.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getrusage)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getrusage
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getrusage)
diff --git a/libc/arch-aarch64/syscalls/getsid.S b/libc/arch-aarch64/syscalls/getsid.S
new file mode 100644
index 0000000..8ec4dc6
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getsid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getsid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getsid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getsid)
diff --git a/libc/arch-aarch64/syscalls/getsockname.S b/libc/arch-aarch64/syscalls/getsockname.S
new file mode 100644
index 0000000..d14ca67
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getsockname.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getsockname)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getsockname
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getsockname)
diff --git a/libc/arch-aarch64/syscalls/getsockopt.S b/libc/arch-aarch64/syscalls/getsockopt.S
new file mode 100644
index 0000000..ec9257f
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getsockopt.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getsockopt)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getsockopt
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getsockopt)
diff --git a/libc/arch-aarch64/syscalls/gettid.S b/libc/arch-aarch64/syscalls/gettid.S
new file mode 100644
index 0000000..0fe02b6
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/gettid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(gettid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_gettid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(gettid)
diff --git a/libc/arch-aarch64/syscalls/gettimeofday.S b/libc/arch-aarch64/syscalls/gettimeofday.S
new file mode 100644
index 0000000..e131928
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/gettimeofday.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(gettimeofday)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_gettimeofday
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(gettimeofday)
diff --git a/libc/arch-aarch64/syscalls/getuid.S b/libc/arch-aarch64/syscalls/getuid.S
new file mode 100644
index 0000000..9fa6b52
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getuid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getuid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getuid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getuid)
diff --git a/libc/arch-aarch64/syscalls/getxattr.S b/libc/arch-aarch64/syscalls/getxattr.S
new file mode 100644
index 0000000..2e5a303
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/getxattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(getxattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_getxattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(getxattr)
diff --git a/libc/arch-aarch64/syscalls/init_module.S b/libc/arch-aarch64/syscalls/init_module.S
new file mode 100644
index 0000000..79ab90d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/init_module.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(init_module)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_init_module
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(init_module)
diff --git a/libc/arch-aarch64/syscalls/inotify_add_watch.S b/libc/arch-aarch64/syscalls/inotify_add_watch.S
new file mode 100644
index 0000000..0baac5d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/inotify_add_watch.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(inotify_add_watch)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_inotify_add_watch
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(inotify_add_watch)
diff --git a/libc/arch-aarch64/syscalls/inotify_init1.S b/libc/arch-aarch64/syscalls/inotify_init1.S
new file mode 100644
index 0000000..b943136
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/inotify_init1.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(inotify_init1)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_inotify_init1
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(inotify_init1)
diff --git a/libc/arch-aarch64/syscalls/inotify_rm_watch.S b/libc/arch-aarch64/syscalls/inotify_rm_watch.S
new file mode 100644
index 0000000..10c7f56
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/inotify_rm_watch.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(inotify_rm_watch)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_inotify_rm_watch
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(inotify_rm_watch)
diff --git a/libc/arch-aarch64/syscalls/ioprio_get.S b/libc/arch-aarch64/syscalls/ioprio_get.S
new file mode 100644
index 0000000..7bf536b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/ioprio_get.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(ioprio_get)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_ioprio_get
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(ioprio_get)
diff --git a/libc/arch-aarch64/syscalls/ioprio_set.S b/libc/arch-aarch64/syscalls/ioprio_set.S
new file mode 100644
index 0000000..be930b3
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/ioprio_set.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(ioprio_set)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_ioprio_set
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(ioprio_set)
diff --git a/libc/arch-aarch64/syscalls/kill.S b/libc/arch-aarch64/syscalls/kill.S
new file mode 100644
index 0000000..afab1e3
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/kill.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(kill)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_kill
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(kill)
diff --git a/libc/arch-aarch64/syscalls/klogctl.S b/libc/arch-aarch64/syscalls/klogctl.S
new file mode 100644
index 0000000..25fe415
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/klogctl.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(klogctl)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_syslog
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(klogctl)
diff --git a/libc/arch-aarch64/syscalls/lgetxattr.S b/libc/arch-aarch64/syscalls/lgetxattr.S
new file mode 100644
index 0000000..5a2d610
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/lgetxattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(lgetxattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_lgetxattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(lgetxattr)
diff --git a/libc/arch-aarch64/syscalls/linkat.S b/libc/arch-aarch64/syscalls/linkat.S
new file mode 100644
index 0000000..a8fb0fd
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/linkat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(linkat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_linkat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(linkat)
diff --git a/libc/arch-aarch64/syscalls/listen.S b/libc/arch-aarch64/syscalls/listen.S
new file mode 100644
index 0000000..a90faa4
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/listen.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(listen)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_listen
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(listen)
diff --git a/libc/arch-aarch64/syscalls/listxattr.S b/libc/arch-aarch64/syscalls/listxattr.S
new file mode 100644
index 0000000..972a9c4
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/listxattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(listxattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_listxattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(listxattr)
diff --git a/libc/arch-aarch64/syscalls/llistxattr.S b/libc/arch-aarch64/syscalls/llistxattr.S
new file mode 100644
index 0000000..28039d2
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/llistxattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(llistxattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_llistxattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(llistxattr)
diff --git a/libc/arch-aarch64/syscalls/lremovexattr.S b/libc/arch-aarch64/syscalls/lremovexattr.S
new file mode 100644
index 0000000..6ff1a16
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/lremovexattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(lremovexattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_lremovexattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(lremovexattr)
diff --git a/libc/arch-aarch64/syscalls/lseek.S b/libc/arch-aarch64/syscalls/lseek.S
new file mode 100644
index 0000000..f6ffba9
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/lseek.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(lseek)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_lseek
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(lseek)
+
+ .globl _C_LABEL(lseek64)
+ .equ _C_LABEL(lseek64), _C_LABEL(lseek)
diff --git a/libc/arch-aarch64/syscalls/lsetxattr.S b/libc/arch-aarch64/syscalls/lsetxattr.S
new file mode 100644
index 0000000..3be465b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/lsetxattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(lsetxattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_lsetxattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(lsetxattr)
diff --git a/libc/arch-aarch64/syscalls/madvise.S b/libc/arch-aarch64/syscalls/madvise.S
new file mode 100644
index 0000000..7ec3596
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/madvise.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(madvise)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_madvise
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(madvise)
diff --git a/libc/arch-aarch64/syscalls/mincore.S b/libc/arch-aarch64/syscalls/mincore.S
new file mode 100644
index 0000000..9e9befe
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/mincore.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(mincore)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_mincore
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(mincore)
diff --git a/libc/arch-aarch64/syscalls/mkdirat.S b/libc/arch-aarch64/syscalls/mkdirat.S
new file mode 100644
index 0000000..bf1f2ae
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/mkdirat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(mkdirat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_mkdirat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(mkdirat)
diff --git a/libc/arch-aarch64/syscalls/mknodat.S b/libc/arch-aarch64/syscalls/mknodat.S
new file mode 100644
index 0000000..5aa907d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/mknodat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(mknodat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_mknodat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(mknodat)
diff --git a/libc/arch-aarch64/syscalls/mlock.S b/libc/arch-aarch64/syscalls/mlock.S
new file mode 100644
index 0000000..be463e6
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/mlock.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(mlock)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_mlock
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(mlock)
diff --git a/libc/arch-aarch64/syscalls/mlockall.S b/libc/arch-aarch64/syscalls/mlockall.S
new file mode 100644
index 0000000..75d1267
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/mlockall.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(mlockall)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_mlockall
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(mlockall)
diff --git a/libc/arch-aarch64/syscalls/mmap.S b/libc/arch-aarch64/syscalls/mmap.S
new file mode 100644
index 0000000..d5b597b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/mmap.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(mmap)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_mmap
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(mmap)
diff --git a/libc/arch-aarch64/syscalls/mount.S b/libc/arch-aarch64/syscalls/mount.S
new file mode 100644
index 0000000..0dd0b71
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/mount.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(mount)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_mount
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(mount)
diff --git a/libc/arch-aarch64/syscalls/mprotect.S b/libc/arch-aarch64/syscalls/mprotect.S
new file mode 100644
index 0000000..0648c82
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/mprotect.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(mprotect)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_mprotect
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(mprotect)
diff --git a/libc/arch-aarch64/syscalls/mremap.S b/libc/arch-aarch64/syscalls/mremap.S
new file mode 100644
index 0000000..8f94e97
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/mremap.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(mremap)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_mremap
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(mremap)
diff --git a/libc/arch-aarch64/syscalls/msync.S b/libc/arch-aarch64/syscalls/msync.S
new file mode 100644
index 0000000..c11fc55
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/msync.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(msync)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_msync
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(msync)
diff --git a/libc/arch-aarch64/syscalls/munlock.S b/libc/arch-aarch64/syscalls/munlock.S
new file mode 100644
index 0000000..ec21f0d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/munlock.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(munlock)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_munlock
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(munlock)
diff --git a/libc/arch-aarch64/syscalls/munlockall.S b/libc/arch-aarch64/syscalls/munlockall.S
new file mode 100644
index 0000000..a596573
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/munlockall.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(munlockall)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_munlockall
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(munlockall)
diff --git a/libc/arch-aarch64/syscalls/munmap.S b/libc/arch-aarch64/syscalls/munmap.S
new file mode 100644
index 0000000..6f29fa4
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/munmap.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(munmap)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_munmap
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(munmap)
diff --git a/libc/arch-aarch64/syscalls/nanosleep.S b/libc/arch-aarch64/syscalls/nanosleep.S
new file mode 100644
index 0000000..e42b11d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/nanosleep.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(nanosleep)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_nanosleep
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(nanosleep)
diff --git a/libc/arch-aarch64/syscalls/perf_event_open.S b/libc/arch-aarch64/syscalls/perf_event_open.S
new file mode 100644
index 0000000..165746f
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/perf_event_open.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(perf_event_open)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_perf_event_open
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(perf_event_open)
diff --git a/libc/arch-aarch64/syscalls/personality.S b/libc/arch-aarch64/syscalls/personality.S
new file mode 100644
index 0000000..b718852
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/personality.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(personality)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_personality
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(personality)
diff --git a/libc/arch-aarch64/syscalls/pipe2.S b/libc/arch-aarch64/syscalls/pipe2.S
new file mode 100644
index 0000000..8b643c7
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/pipe2.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(pipe2)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_pipe2
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(pipe2)
diff --git a/libc/arch-aarch64/syscalls/prctl.S b/libc/arch-aarch64/syscalls/prctl.S
new file mode 100644
index 0000000..faf2735
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/prctl.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(prctl)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_prctl
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(prctl)
diff --git a/libc/arch-aarch64/syscalls/pread64.S b/libc/arch-aarch64/syscalls/pread64.S
new file mode 100644
index 0000000..82a2fb2
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/pread64.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(pread64)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_pread64
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(pread64)
diff --git a/libc/arch-aarch64/syscalls/pwrite64.S b/libc/arch-aarch64/syscalls/pwrite64.S
new file mode 100644
index 0000000..ab4b502
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/pwrite64.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(pwrite64)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_pwrite64
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(pwrite64)
diff --git a/libc/arch-aarch64/syscalls/read.S b/libc/arch-aarch64/syscalls/read.S
new file mode 100644
index 0000000..475ab72
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/read.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(read)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_read
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(read)
diff --git a/libc/arch-aarch64/syscalls/readahead.S b/libc/arch-aarch64/syscalls/readahead.S
new file mode 100644
index 0000000..eb76fb5
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/readahead.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(readahead)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_readahead
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(readahead)
diff --git a/libc/arch-aarch64/syscalls/readlinkat.S b/libc/arch-aarch64/syscalls/readlinkat.S
new file mode 100644
index 0000000..1ed5495
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/readlinkat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(readlinkat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_readlinkat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(readlinkat)
diff --git a/libc/arch-aarch64/syscalls/readv.S b/libc/arch-aarch64/syscalls/readv.S
new file mode 100644
index 0000000..7279a4c
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/readv.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(readv)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_readv
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(readv)
diff --git a/libc/arch-aarch64/syscalls/recvfrom.S b/libc/arch-aarch64/syscalls/recvfrom.S
new file mode 100644
index 0000000..b0759a8
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/recvfrom.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(recvfrom)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_recvfrom
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(recvfrom)
diff --git a/libc/arch-aarch64/syscalls/recvmsg.S b/libc/arch-aarch64/syscalls/recvmsg.S
new file mode 100644
index 0000000..b40d927
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/recvmsg.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(recvmsg)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_recvmsg
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(recvmsg)
diff --git a/libc/arch-aarch64/syscalls/removexattr.S b/libc/arch-aarch64/syscalls/removexattr.S
new file mode 100644
index 0000000..3394cc6
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/removexattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(removexattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_removexattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(removexattr)
diff --git a/libc/arch-aarch64/syscalls/renameat.S b/libc/arch-aarch64/syscalls/renameat.S
new file mode 100644
index 0000000..567c75a
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/renameat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(renameat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_renameat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(renameat)
diff --git a/libc/arch-aarch64/syscalls/sched_get_priority_max.S b/libc/arch-aarch64/syscalls/sched_get_priority_max.S
new file mode 100644
index 0000000..2e34080
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sched_get_priority_max.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sched_get_priority_max)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_get_priority_max
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sched_get_priority_max)
diff --git a/libc/arch-aarch64/syscalls/sched_get_priority_min.S b/libc/arch-aarch64/syscalls/sched_get_priority_min.S
new file mode 100644
index 0000000..3347aa5
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sched_get_priority_min.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sched_get_priority_min)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_get_priority_min
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sched_get_priority_min)
diff --git a/libc/arch-aarch64/syscalls/sched_getparam.S b/libc/arch-aarch64/syscalls/sched_getparam.S
new file mode 100644
index 0000000..723a131
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sched_getparam.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sched_getparam)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_getparam
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sched_getparam)
diff --git a/libc/arch-aarch64/syscalls/sched_getscheduler.S b/libc/arch-aarch64/syscalls/sched_getscheduler.S
new file mode 100644
index 0000000..fbaddc7
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sched_getscheduler.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sched_getscheduler)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_getscheduler
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sched_getscheduler)
diff --git a/libc/arch-aarch64/syscalls/sched_rr_get_interval.S b/libc/arch-aarch64/syscalls/sched_rr_get_interval.S
new file mode 100644
index 0000000..e2a4952
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sched_rr_get_interval.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sched_rr_get_interval)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_rr_get_interval
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sched_rr_get_interval)
diff --git a/libc/arch-aarch64/syscalls/sched_setaffinity.S b/libc/arch-aarch64/syscalls/sched_setaffinity.S
new file mode 100644
index 0000000..7c1aec7
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sched_setaffinity.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sched_setaffinity)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_setaffinity
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sched_setaffinity)
diff --git a/libc/arch-aarch64/syscalls/sched_setparam.S b/libc/arch-aarch64/syscalls/sched_setparam.S
new file mode 100644
index 0000000..309a07d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sched_setparam.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sched_setparam)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_setparam
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sched_setparam)
diff --git a/libc/arch-aarch64/syscalls/sched_setscheduler.S b/libc/arch-aarch64/syscalls/sched_setscheduler.S
new file mode 100644
index 0000000..8a6d6fe
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sched_setscheduler.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sched_setscheduler)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_setscheduler
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sched_setscheduler)
diff --git a/libc/arch-aarch64/syscalls/sched_yield.S b/libc/arch-aarch64/syscalls/sched_yield.S
new file mode 100644
index 0000000..a61979a
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sched_yield.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sched_yield)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sched_yield
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sched_yield)
diff --git a/libc/arch-aarch64/syscalls/sendfile.S b/libc/arch-aarch64/syscalls/sendfile.S
new file mode 100644
index 0000000..9ae7a9a
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sendfile.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sendfile)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sendfile
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sendfile)
+
+ .globl _C_LABEL(sendfile64)
+ .equ _C_LABEL(sendfile64), _C_LABEL(sendfile)
diff --git a/libc/arch-aarch64/syscalls/sendmsg.S b/libc/arch-aarch64/syscalls/sendmsg.S
new file mode 100644
index 0000000..bd33724
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sendmsg.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sendmsg)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sendmsg
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sendmsg)
diff --git a/libc/arch-aarch64/syscalls/sendto.S b/libc/arch-aarch64/syscalls/sendto.S
new file mode 100644
index 0000000..44887e0
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sendto.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sendto)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sendto
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sendto)
diff --git a/libc/arch-aarch64/syscalls/setgid.S b/libc/arch-aarch64/syscalls/setgid.S
new file mode 100644
index 0000000..fb78157
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setgid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setgid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setgid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setgid)
diff --git a/libc/arch-aarch64/syscalls/setgroups.S b/libc/arch-aarch64/syscalls/setgroups.S
new file mode 100644
index 0000000..81d2b19
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setgroups.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setgroups)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setgroups
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setgroups)
diff --git a/libc/arch-aarch64/syscalls/setitimer.S b/libc/arch-aarch64/syscalls/setitimer.S
new file mode 100644
index 0000000..aa0c0c2
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setitimer.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setitimer)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setitimer
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setitimer)
diff --git a/libc/arch-aarch64/syscalls/setpgid.S b/libc/arch-aarch64/syscalls/setpgid.S
new file mode 100644
index 0000000..6d14cd9
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setpgid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setpgid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setpgid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setpgid)
diff --git a/libc/arch-aarch64/syscalls/setpriority.S b/libc/arch-aarch64/syscalls/setpriority.S
new file mode 100644
index 0000000..47da6b4
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setpriority.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setpriority)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setpriority
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setpriority)
diff --git a/libc/arch-aarch64/syscalls/setregid.S b/libc/arch-aarch64/syscalls/setregid.S
new file mode 100644
index 0000000..d3e0f4b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setregid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setregid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setregid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setregid)
diff --git a/libc/arch-aarch64/syscalls/setresgid.S b/libc/arch-aarch64/syscalls/setresgid.S
new file mode 100644
index 0000000..720b721
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setresgid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setresgid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setresgid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setresgid)
diff --git a/libc/arch-aarch64/syscalls/setresuid.S b/libc/arch-aarch64/syscalls/setresuid.S
new file mode 100644
index 0000000..e2eb626
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setresuid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setresuid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setresuid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setresuid)
diff --git a/libc/arch-aarch64/syscalls/setreuid.S b/libc/arch-aarch64/syscalls/setreuid.S
new file mode 100644
index 0000000..dc66ce8
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setreuid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setreuid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setreuid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setreuid)
diff --git a/libc/arch-aarch64/syscalls/setrlimit.S b/libc/arch-aarch64/syscalls/setrlimit.S
new file mode 100644
index 0000000..57358ac
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setrlimit.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setrlimit)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setrlimit
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setrlimit)
diff --git a/libc/arch-aarch64/syscalls/setsid.S b/libc/arch-aarch64/syscalls/setsid.S
new file mode 100644
index 0000000..26d003a
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setsid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setsid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setsid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setsid)
diff --git a/libc/arch-aarch64/syscalls/setsockopt.S b/libc/arch-aarch64/syscalls/setsockopt.S
new file mode 100644
index 0000000..d11f96b
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setsockopt.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setsockopt)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setsockopt
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setsockopt)
diff --git a/libc/arch-aarch64/syscalls/settimeofday.S b/libc/arch-aarch64/syscalls/settimeofday.S
new file mode 100644
index 0000000..180436d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/settimeofday.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(settimeofday)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_settimeofday
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(settimeofday)
diff --git a/libc/arch-aarch64/syscalls/setuid.S b/libc/arch-aarch64/syscalls/setuid.S
new file mode 100644
index 0000000..7fafb4e
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setuid.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setuid)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setuid
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setuid)
diff --git a/libc/arch-aarch64/syscalls/setxattr.S b/libc/arch-aarch64/syscalls/setxattr.S
new file mode 100644
index 0000000..40ad28f
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/setxattr.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(setxattr)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_setxattr
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(setxattr)
diff --git a/libc/arch-aarch64/syscalls/shutdown.S b/libc/arch-aarch64/syscalls/shutdown.S
new file mode 100644
index 0000000..8136861
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/shutdown.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(shutdown)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_shutdown
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(shutdown)
diff --git a/libc/arch-aarch64/syscalls/sigaltstack.S b/libc/arch-aarch64/syscalls/sigaltstack.S
new file mode 100644
index 0000000..62a9fb9
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sigaltstack.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sigaltstack)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sigaltstack
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sigaltstack)
diff --git a/libc/arch-aarch64/syscalls/signalfd4.S b/libc/arch-aarch64/syscalls/signalfd4.S
new file mode 100644
index 0000000..83644b8
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/signalfd4.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(signalfd4)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_signalfd4
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(signalfd4)
diff --git a/libc/arch-aarch64/syscalls/socket.S b/libc/arch-aarch64/syscalls/socket.S
new file mode 100644
index 0000000..29e2299
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/socket.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(socket)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_socket
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(socket)
diff --git a/libc/arch-aarch64/syscalls/socketpair.S b/libc/arch-aarch64/syscalls/socketpair.S
new file mode 100644
index 0000000..6e985c0
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/socketpair.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(socketpair)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_socketpair
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(socketpair)
diff --git a/libc/arch-aarch64/syscalls/statfs.S b/libc/arch-aarch64/syscalls/statfs.S
new file mode 100644
index 0000000..1647e60
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/statfs.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(statfs)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_statfs
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(statfs)
diff --git a/libc/arch-aarch64/syscalls/swapoff.S b/libc/arch-aarch64/syscalls/swapoff.S
new file mode 100644
index 0000000..60f9927
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/swapoff.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(swapoff)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_swapoff
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(swapoff)
diff --git a/libc/arch-aarch64/syscalls/swapon.S b/libc/arch-aarch64/syscalls/swapon.S
new file mode 100644
index 0000000..176ff58
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/swapon.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(swapon)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_swapon
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(swapon)
diff --git a/libc/arch-aarch64/syscalls/symlinkat.S b/libc/arch-aarch64/syscalls/symlinkat.S
new file mode 100644
index 0000000..1e3c7f9
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/symlinkat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(symlinkat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_symlinkat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(symlinkat)
diff --git a/libc/arch-aarch64/syscalls/sync.S b/libc/arch-aarch64/syscalls/sync.S
new file mode 100644
index 0000000..24b5690
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sync.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sync)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sync
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sync)
diff --git a/libc/arch-aarch64/syscalls/sysinfo.S b/libc/arch-aarch64/syscalls/sysinfo.S
new file mode 100644
index 0000000..0bae446
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/sysinfo.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(sysinfo)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_sysinfo
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(sysinfo)
diff --git a/libc/arch-aarch64/syscalls/tgkill.S b/libc/arch-aarch64/syscalls/tgkill.S
new file mode 100644
index 0000000..1c382b2
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/tgkill.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(tgkill)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_tgkill
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(tgkill)
diff --git a/libc/arch-aarch64/syscalls/timerfd_create.S b/libc/arch-aarch64/syscalls/timerfd_create.S
new file mode 100644
index 0000000..a1cd44e
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/timerfd_create.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(timerfd_create)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_timerfd_create
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(timerfd_create)
diff --git a/libc/arch-aarch64/syscalls/timerfd_gettime.S b/libc/arch-aarch64/syscalls/timerfd_gettime.S
new file mode 100644
index 0000000..c8c213d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/timerfd_gettime.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(timerfd_gettime)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_timerfd_gettime
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(timerfd_gettime)
diff --git a/libc/arch-aarch64/syscalls/timerfd_settime.S b/libc/arch-aarch64/syscalls/timerfd_settime.S
new file mode 100644
index 0000000..6963a09
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/timerfd_settime.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(timerfd_settime)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_timerfd_settime
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(timerfd_settime)
diff --git a/libc/arch-aarch64/syscalls/times.S b/libc/arch-aarch64/syscalls/times.S
new file mode 100644
index 0000000..dfd7db1
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/times.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(times)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_times
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(times)
diff --git a/libc/arch-aarch64/syscalls/tkill.S b/libc/arch-aarch64/syscalls/tkill.S
new file mode 100644
index 0000000..7e5e5bb
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/tkill.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(tkill)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_tkill
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(tkill)
diff --git a/libc/arch-aarch64/syscalls/truncate.S b/libc/arch-aarch64/syscalls/truncate.S
new file mode 100644
index 0000000..db5a2f3
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/truncate.S
@@ -0,0 +1,26 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(truncate)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_truncate
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(truncate)
+
+ .globl _C_LABEL(truncate64)
+ .equ _C_LABEL(truncate64), _C_LABEL(truncate)
diff --git a/libc/arch-aarch64/syscalls/umask.S b/libc/arch-aarch64/syscalls/umask.S
new file mode 100644
index 0000000..16d48ac
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/umask.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(umask)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_umask
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(umask)
diff --git a/libc/arch-aarch64/syscalls/umount2.S b/libc/arch-aarch64/syscalls/umount2.S
new file mode 100644
index 0000000..0079e6d
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/umount2.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(umount2)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_umount2
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(umount2)
diff --git a/libc/arch-aarch64/syscalls/uname.S b/libc/arch-aarch64/syscalls/uname.S
new file mode 100644
index 0000000..36b5cc8
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/uname.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(uname)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_uname
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(uname)
diff --git a/libc/arch-aarch64/syscalls/unlinkat.S b/libc/arch-aarch64/syscalls/unlinkat.S
new file mode 100644
index 0000000..3a7c78f
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/unlinkat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(unlinkat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_unlinkat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(unlinkat)
diff --git a/libc/arch-aarch64/syscalls/unshare.S b/libc/arch-aarch64/syscalls/unshare.S
new file mode 100644
index 0000000..c69c7da
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/unshare.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(unshare)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_unshare
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(unshare)
diff --git a/libc/arch-aarch64/syscalls/utimensat.S b/libc/arch-aarch64/syscalls/utimensat.S
new file mode 100644
index 0000000..83f1141
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/utimensat.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(utimensat)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_utimensat
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(utimensat)
diff --git a/libc/arch-aarch64/syscalls/wait4.S b/libc/arch-aarch64/syscalls/wait4.S
new file mode 100644
index 0000000..cf723b3
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/wait4.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(wait4)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_wait4
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(wait4)
diff --git a/libc/arch-aarch64/syscalls/write.S b/libc/arch-aarch64/syscalls/write.S
new file mode 100644
index 0000000..15b17c8
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/write.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(write)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_write
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(write)
diff --git a/libc/arch-aarch64/syscalls/writev.S b/libc/arch-aarch64/syscalls/writev.S
new file mode 100644
index 0000000..fe802af
--- /dev/null
+++ b/libc/arch-aarch64/syscalls/writev.S
@@ -0,0 +1,23 @@
+/* Generated by gensyscalls.py. Do not edit. */
+
+#include <asm/unistd.h>
+#include <linux/err.h>
+#include <machine/asm.h>
+
+ENTRY(writev)
+ stp x29, x30, [sp, #-16]!
+ mov x29, sp
+ str x8, [sp, #-16]!
+
+ mov x8, __NR_writev
+ svc #0
+
+ ldr x8, [sp], #16
+ ldp x29, x30, [sp], #16
+
+ cmn x0, #(MAX_ERRNO + 1)
+ cneg x0, x0, hi
+ b.hi __set_errno
+
+ ret
+END(writev)