aboutsummaryrefslogtreecommitdiffstats
path: root/libc
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2013-01-25 21:57:58 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2013-01-25 21:57:58 +0000
commit6a94cb748bf63278c3271b0ab610061b0dc6f04a (patch)
treec811de50ac7aca47876b70dda93ab1e33b7e6231 /libc
parentb871e5d6b3b4a214c7f19bdfca7663f1fe49fda8 (diff)
parentfaa0fdb1194172f578f973097d61e580bce528dc (diff)
downloadandroid_bionic-6a94cb748bf63278c3271b0ab610061b0dc6f04a.tar.gz
android_bionic-6a94cb748bf63278c3271b0ab610061b0dc6f04a.tar.bz2
android_bionic-6a94cb748bf63278c3271b0ab610061b0dc6f04a.zip
Merge "arm syscall : for eabi call_default don't use stack"
Diffstat (limited to 'libc')
-rw-r--r--libc/arch-arm/syscalls/__brk.S5
-rw-r--r--libc/arch-arm/syscalls/__fcntl.S5
-rw-r--r--libc/arch-arm/syscalls/__fcntl64.S5
-rw-r--r--libc/arch-arm/syscalls/__fork.S5
-rw-r--r--libc/arch-arm/syscalls/__fstatfs64.S5
-rw-r--r--libc/arch-arm/syscalls/__getcpu.S5
-rw-r--r--libc/arch-arm/syscalls/__getcwd.S5
-rw-r--r--libc/arch-arm/syscalls/__getpriority.S5
-rw-r--r--libc/arch-arm/syscalls/__ioctl.S5
-rw-r--r--libc/arch-arm/syscalls/__open.S5
-rw-r--r--libc/arch-arm/syscalls/__openat.S5
-rw-r--r--libc/arch-arm/syscalls/__ptrace.S5
-rw-r--r--libc/arch-arm/syscalls/__reboot.S5
-rw-r--r--libc/arch-arm/syscalls/__rt_sigaction.S5
-rw-r--r--libc/arch-arm/syscalls/__rt_sigprocmask.S5
-rw-r--r--libc/arch-arm/syscalls/__rt_sigtimedwait.S5
-rw-r--r--libc/arch-arm/syscalls/__sched_getaffinity.S5
-rw-r--r--libc/arch-arm/syscalls/__set_tls.S5
-rw-r--r--libc/arch-arm/syscalls/__setresuid.S5
-rw-r--r--libc/arch-arm/syscalls/__setreuid.S5
-rw-r--r--libc/arch-arm/syscalls/__setuid.S5
-rw-r--r--libc/arch-arm/syscalls/__sigsuspend.S5
-rw-r--r--libc/arch-arm/syscalls/__statfs64.S5
-rw-r--r--libc/arch-arm/syscalls/__syslog.S5
-rw-r--r--libc/arch-arm/syscalls/__timer_create.S5
-rw-r--r--libc/arch-arm/syscalls/__timer_delete.S5
-rw-r--r--libc/arch-arm/syscalls/__timer_getoverrun.S5
-rw-r--r--libc/arch-arm/syscalls/__timer_gettime.S5
-rw-r--r--libc/arch-arm/syscalls/__timer_settime.S5
-rw-r--r--libc/arch-arm/syscalls/__wait4.S5
-rw-r--r--libc/arch-arm/syscalls/_exit.S5
-rw-r--r--libc/arch-arm/syscalls/_exit_thread.S5
-rw-r--r--libc/arch-arm/syscalls/accept.S5
-rw-r--r--libc/arch-arm/syscalls/access.S5
-rw-r--r--libc/arch-arm/syscalls/acct.S5
-rw-r--r--libc/arch-arm/syscalls/bind.S5
-rw-r--r--libc/arch-arm/syscalls/cacheflush.S5
-rw-r--r--libc/arch-arm/syscalls/capget.S5
-rw-r--r--libc/arch-arm/syscalls/capset.S5
-rw-r--r--libc/arch-arm/syscalls/chdir.S5
-rw-r--r--libc/arch-arm/syscalls/chmod.S5
-rw-r--r--libc/arch-arm/syscalls/chown.S5
-rw-r--r--libc/arch-arm/syscalls/chroot.S5
-rw-r--r--libc/arch-arm/syscalls/clock_getres.S5
-rw-r--r--libc/arch-arm/syscalls/clock_gettime.S5
-rw-r--r--libc/arch-arm/syscalls/clock_nanosleep.S5
-rw-r--r--libc/arch-arm/syscalls/clock_settime.S5
-rw-r--r--libc/arch-arm/syscalls/close.S5
-rw-r--r--libc/arch-arm/syscalls/connect.S5
-rw-r--r--libc/arch-arm/syscalls/delete_module.S5
-rw-r--r--libc/arch-arm/syscalls/dup.S5
-rw-r--r--libc/arch-arm/syscalls/dup2.S5
-rw-r--r--libc/arch-arm/syscalls/epoll_create.S5
-rw-r--r--libc/arch-arm/syscalls/epoll_ctl.S5
-rw-r--r--libc/arch-arm/syscalls/epoll_wait.S5
-rw-r--r--libc/arch-arm/syscalls/eventfd.S5
-rw-r--r--libc/arch-arm/syscalls/execve.S5
-rw-r--r--libc/arch-arm/syscalls/faccessat.S5
-rw-r--r--libc/arch-arm/syscalls/fchdir.S5
-rw-r--r--libc/arch-arm/syscalls/fchmod.S5
-rw-r--r--libc/arch-arm/syscalls/fchmodat.S5
-rw-r--r--libc/arch-arm/syscalls/fchown.S5
-rw-r--r--libc/arch-arm/syscalls/fdatasync.S5
-rw-r--r--libc/arch-arm/syscalls/fgetxattr.S5
-rw-r--r--libc/arch-arm/syscalls/flistxattr.S5
-rw-r--r--libc/arch-arm/syscalls/flock.S5
-rw-r--r--libc/arch-arm/syscalls/fremovexattr.S5
-rw-r--r--libc/arch-arm/syscalls/fstat.S5
-rw-r--r--libc/arch-arm/syscalls/fstatat.S5
-rw-r--r--libc/arch-arm/syscalls/fsync.S5
-rw-r--r--libc/arch-arm/syscalls/ftruncate.S5
-rw-r--r--libc/arch-arm/syscalls/ftruncate64.S5
-rw-r--r--libc/arch-arm/syscalls/getdents.S5
-rw-r--r--libc/arch-arm/syscalls/getegid.S5
-rw-r--r--libc/arch-arm/syscalls/geteuid.S5
-rw-r--r--libc/arch-arm/syscalls/getgid.S5
-rw-r--r--libc/arch-arm/syscalls/getgroups.S5
-rw-r--r--libc/arch-arm/syscalls/getitimer.S5
-rw-r--r--libc/arch-arm/syscalls/getpeername.S5
-rw-r--r--libc/arch-arm/syscalls/getpgid.S5
-rw-r--r--libc/arch-arm/syscalls/getpid.S5
-rw-r--r--libc/arch-arm/syscalls/getppid.S5
-rw-r--r--libc/arch-arm/syscalls/getresgid.S5
-rw-r--r--libc/arch-arm/syscalls/getresuid.S5
-rw-r--r--libc/arch-arm/syscalls/getrlimit.S5
-rw-r--r--libc/arch-arm/syscalls/getrusage.S5
-rw-r--r--libc/arch-arm/syscalls/getsid.S5
-rw-r--r--libc/arch-arm/syscalls/getsockname.S5
-rw-r--r--libc/arch-arm/syscalls/gettid.S5
-rw-r--r--libc/arch-arm/syscalls/gettimeofday.S5
-rw-r--r--libc/arch-arm/syscalls/getuid.S5
-rw-r--r--libc/arch-arm/syscalls/getxattr.S5
-rw-r--r--libc/arch-arm/syscalls/init_module.S5
-rw-r--r--libc/arch-arm/syscalls/inotify_add_watch.S5
-rw-r--r--libc/arch-arm/syscalls/inotify_init.S5
-rw-r--r--libc/arch-arm/syscalls/inotify_rm_watch.S5
-rw-r--r--libc/arch-arm/syscalls/ioprio_get.S5
-rw-r--r--libc/arch-arm/syscalls/ioprio_set.S5
-rw-r--r--libc/arch-arm/syscalls/klogctl.S5
-rw-r--r--libc/arch-arm/syscalls/lchown.S5
-rw-r--r--libc/arch-arm/syscalls/lgetxattr.S5
-rw-r--r--libc/arch-arm/syscalls/link.S5
-rw-r--r--libc/arch-arm/syscalls/listen.S5
-rw-r--r--libc/arch-arm/syscalls/listxattr.S5
-rw-r--r--libc/arch-arm/syscalls/llistxattr.S5
-rw-r--r--libc/arch-arm/syscalls/lremovexattr.S5
-rw-r--r--libc/arch-arm/syscalls/lseek.S5
-rw-r--r--libc/arch-arm/syscalls/lstat.S5
-rw-r--r--libc/arch-arm/syscalls/madvise.S5
-rw-r--r--libc/arch-arm/syscalls/mincore.S5
-rw-r--r--libc/arch-arm/syscalls/mkdir.S5
-rw-r--r--libc/arch-arm/syscalls/mkdirat.S5
-rw-r--r--libc/arch-arm/syscalls/mknod.S5
-rw-r--r--libc/arch-arm/syscalls/mlock.S5
-rw-r--r--libc/arch-arm/syscalls/mlockall.S5
-rw-r--r--libc/arch-arm/syscalls/mprotect.S5
-rw-r--r--libc/arch-arm/syscalls/mremap.S5
-rw-r--r--libc/arch-arm/syscalls/msync.S5
-rw-r--r--libc/arch-arm/syscalls/munlock.S5
-rw-r--r--libc/arch-arm/syscalls/munlockall.S5
-rw-r--r--libc/arch-arm/syscalls/munmap.S5
-rw-r--r--libc/arch-arm/syscalls/nanosleep.S5
-rw-r--r--libc/arch-arm/syscalls/pause.S5
-rw-r--r--libc/arch-arm/syscalls/personality.S5
-rw-r--r--libc/arch-arm/syscalls/pipe.S5
-rw-r--r--libc/arch-arm/syscalls/pipe2.S5
-rw-r--r--libc/arch-arm/syscalls/poll.S5
-rw-r--r--libc/arch-arm/syscalls/read.S5
-rw-r--r--libc/arch-arm/syscalls/readlink.S5
-rw-r--r--libc/arch-arm/syscalls/readv.S5
-rw-r--r--libc/arch-arm/syscalls/recvmsg.S5
-rw-r--r--libc/arch-arm/syscalls/removexattr.S5
-rw-r--r--libc/arch-arm/syscalls/rename.S5
-rw-r--r--libc/arch-arm/syscalls/renameat.S5
-rw-r--r--libc/arch-arm/syscalls/rmdir.S5
-rw-r--r--libc/arch-arm/syscalls/sched_get_priority_max.S5
-rw-r--r--libc/arch-arm/syscalls/sched_get_priority_min.S5
-rw-r--r--libc/arch-arm/syscalls/sched_getparam.S5
-rw-r--r--libc/arch-arm/syscalls/sched_getscheduler.S5
-rw-r--r--libc/arch-arm/syscalls/sched_rr_get_interval.S5
-rw-r--r--libc/arch-arm/syscalls/sched_setaffinity.S5
-rw-r--r--libc/arch-arm/syscalls/sched_setparam.S5
-rw-r--r--libc/arch-arm/syscalls/sched_setscheduler.S5
-rw-r--r--libc/arch-arm/syscalls/sched_yield.S5
-rw-r--r--libc/arch-arm/syscalls/sendfile.S5
-rw-r--r--libc/arch-arm/syscalls/sendmsg.S5
-rw-r--r--libc/arch-arm/syscalls/setgid.S5
-rw-r--r--libc/arch-arm/syscalls/setgroups.S5
-rw-r--r--libc/arch-arm/syscalls/setitimer.S5
-rw-r--r--libc/arch-arm/syscalls/setpgid.S5
-rw-r--r--libc/arch-arm/syscalls/setpriority.S5
-rw-r--r--libc/arch-arm/syscalls/setregid.S5
-rw-r--r--libc/arch-arm/syscalls/setresgid.S5
-rw-r--r--libc/arch-arm/syscalls/setrlimit.S5
-rw-r--r--libc/arch-arm/syscalls/setsid.S5
-rw-r--r--libc/arch-arm/syscalls/settimeofday.S5
-rw-r--r--libc/arch-arm/syscalls/shutdown.S5
-rw-r--r--libc/arch-arm/syscalls/sigaction.S5
-rw-r--r--libc/arch-arm/syscalls/sigaltstack.S5
-rw-r--r--libc/arch-arm/syscalls/signalfd4.S5
-rw-r--r--libc/arch-arm/syscalls/sigpending.S5
-rw-r--r--libc/arch-arm/syscalls/sigprocmask.S5
-rw-r--r--libc/arch-arm/syscalls/socket.S5
-rw-r--r--libc/arch-arm/syscalls/socketpair.S5
-rw-r--r--libc/arch-arm/syscalls/stat.S5
-rw-r--r--libc/arch-arm/syscalls/symlink.S5
-rw-r--r--libc/arch-arm/syscalls/sync.S5
-rw-r--r--libc/arch-arm/syscalls/sysinfo.S5
-rw-r--r--libc/arch-arm/syscalls/times.S5
-rw-r--r--libc/arch-arm/syscalls/truncate.S5
-rw-r--r--libc/arch-arm/syscalls/umask.S5
-rw-r--r--libc/arch-arm/syscalls/umount2.S5
-rw-r--r--libc/arch-arm/syscalls/uname.S5
-rw-r--r--libc/arch-arm/syscalls/unlink.S5
-rw-r--r--libc/arch-arm/syscalls/unlinkat.S5
-rw-r--r--libc/arch-arm/syscalls/unshare.S5
-rw-r--r--libc/arch-arm/syscalls/utimensat.S5
-rw-r--r--libc/arch-arm/syscalls/utimes.S5
-rw-r--r--libc/arch-arm/syscalls/vfork.S5
-rw-r--r--libc/arch-arm/syscalls/write.S5
-rw-r--r--libc/arch-arm/syscalls/writev.S5
-rwxr-xr-xlibc/tools/gensyscalls.py5
182 files changed, 364 insertions, 546 deletions
diff --git a/libc/arch-arm/syscalls/__brk.S b/libc/arch-arm/syscalls/__brk.S
index a0854a062..e4fcab057 100644
--- a/libc/arch-arm/syscalls/__brk.S
+++ b/libc/arch-arm/syscalls/__brk.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__brk)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_brk
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__fcntl.S b/libc/arch-arm/syscalls/__fcntl.S
index 067ee9aab..ee82ef1bd 100644
--- a/libc/arch-arm/syscalls/__fcntl.S
+++ b/libc/arch-arm/syscalls/__fcntl.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__fcntl)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fcntl
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__fcntl64.S b/libc/arch-arm/syscalls/__fcntl64.S
index 3d3956772..96cc16b4e 100644
--- a/libc/arch-arm/syscalls/__fcntl64.S
+++ b/libc/arch-arm/syscalls/__fcntl64.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__fcntl64)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fcntl64
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__fork.S b/libc/arch-arm/syscalls/__fork.S
index 6cf08ad47..9df970286 100644
--- a/libc/arch-arm/syscalls/__fork.S
+++ b/libc/arch-arm/syscalls/__fork.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__fork)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fork
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__fstatfs64.S b/libc/arch-arm/syscalls/__fstatfs64.S
index e8aa2f410..6e902148c 100644
--- a/libc/arch-arm/syscalls/__fstatfs64.S
+++ b/libc/arch-arm/syscalls/__fstatfs64.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__fstatfs64)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fstatfs64
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__getcpu.S b/libc/arch-arm/syscalls/__getcpu.S
index 78271eb17..7976b0606 100644
--- a/libc/arch-arm/syscalls/__getcpu.S
+++ b/libc/arch-arm/syscalls/__getcpu.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__getcpu)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getcpu
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__getcwd.S b/libc/arch-arm/syscalls/__getcwd.S
index e09a4844e..6fc2d64e3 100644
--- a/libc/arch-arm/syscalls/__getcwd.S
+++ b/libc/arch-arm/syscalls/__getcwd.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__getcwd)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getcwd
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__getpriority.S b/libc/arch-arm/syscalls/__getpriority.S
index 30e335c80..6fb2a4340 100644
--- a/libc/arch-arm/syscalls/__getpriority.S
+++ b/libc/arch-arm/syscalls/__getpriority.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__getpriority)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getpriority
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__ioctl.S b/libc/arch-arm/syscalls/__ioctl.S
index 554809f46..56fd607b5 100644
--- a/libc/arch-arm/syscalls/__ioctl.S
+++ b/libc/arch-arm/syscalls/__ioctl.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__ioctl)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_ioctl
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__open.S b/libc/arch-arm/syscalls/__open.S
index be2f4bf63..589d5adc7 100644
--- a/libc/arch-arm/syscalls/__open.S
+++ b/libc/arch-arm/syscalls/__open.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__open)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_open
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__openat.S b/libc/arch-arm/syscalls/__openat.S
index 4d9178003..10c30d377 100644
--- a/libc/arch-arm/syscalls/__openat.S
+++ b/libc/arch-arm/syscalls/__openat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__openat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_openat
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__ptrace.S b/libc/arch-arm/syscalls/__ptrace.S
index 04e0a309a..72acd7051 100644
--- a/libc/arch-arm/syscalls/__ptrace.S
+++ b/libc/arch-arm/syscalls/__ptrace.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__ptrace)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_ptrace
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__reboot.S b/libc/arch-arm/syscalls/__reboot.S
index e75df4529..07898a05a 100644
--- a/libc/arch-arm/syscalls/__reboot.S
+++ b/libc/arch-arm/syscalls/__reboot.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__reboot)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_reboot
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__rt_sigaction.S b/libc/arch-arm/syscalls/__rt_sigaction.S
index 57a31497d..31d4c1e61 100644
--- a/libc/arch-arm/syscalls/__rt_sigaction.S
+++ b/libc/arch-arm/syscalls/__rt_sigaction.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__rt_sigaction)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_rt_sigaction
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__rt_sigprocmask.S b/libc/arch-arm/syscalls/__rt_sigprocmask.S
index 822082575..640a7ee34 100644
--- a/libc/arch-arm/syscalls/__rt_sigprocmask.S
+++ b/libc/arch-arm/syscalls/__rt_sigprocmask.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__rt_sigprocmask)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_rt_sigprocmask
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__rt_sigtimedwait.S b/libc/arch-arm/syscalls/__rt_sigtimedwait.S
index bce63ed83..ad725afa6 100644
--- a/libc/arch-arm/syscalls/__rt_sigtimedwait.S
+++ b/libc/arch-arm/syscalls/__rt_sigtimedwait.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__rt_sigtimedwait)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_rt_sigtimedwait
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__sched_getaffinity.S b/libc/arch-arm/syscalls/__sched_getaffinity.S
index bdd451731..bee167455 100644
--- a/libc/arch-arm/syscalls/__sched_getaffinity.S
+++ b/libc/arch-arm/syscalls/__sched_getaffinity.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__sched_getaffinity)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_getaffinity
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__set_tls.S b/libc/arch-arm/syscalls/__set_tls.S
index cf5d6b60c..3039b3505 100644
--- a/libc/arch-arm/syscalls/__set_tls.S
+++ b/libc/arch-arm/syscalls/__set_tls.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__set_tls)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_ARM_set_tls
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__setresuid.S b/libc/arch-arm/syscalls/__setresuid.S
index d5053bae7..1877bbfac 100644
--- a/libc/arch-arm/syscalls/__setresuid.S
+++ b/libc/arch-arm/syscalls/__setresuid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__setresuid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setresuid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__setreuid.S b/libc/arch-arm/syscalls/__setreuid.S
index 9cd51f684..2129cb212 100644
--- a/libc/arch-arm/syscalls/__setreuid.S
+++ b/libc/arch-arm/syscalls/__setreuid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__setreuid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setreuid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__setuid.S b/libc/arch-arm/syscalls/__setuid.S
index 88dc58e87..9df2f89c4 100644
--- a/libc/arch-arm/syscalls/__setuid.S
+++ b/libc/arch-arm/syscalls/__setuid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__setuid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setuid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__sigsuspend.S b/libc/arch-arm/syscalls/__sigsuspend.S
index 1ececb797..8f1ff55c6 100644
--- a/libc/arch-arm/syscalls/__sigsuspend.S
+++ b/libc/arch-arm/syscalls/__sigsuspend.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__sigsuspend)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sigsuspend
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__statfs64.S b/libc/arch-arm/syscalls/__statfs64.S
index 4afef71a9..f8d63a3a0 100644
--- a/libc/arch-arm/syscalls/__statfs64.S
+++ b/libc/arch-arm/syscalls/__statfs64.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__statfs64)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_statfs64
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__syslog.S b/libc/arch-arm/syscalls/__syslog.S
index 6dbe745f8..8ad027122 100644
--- a/libc/arch-arm/syscalls/__syslog.S
+++ b/libc/arch-arm/syscalls/__syslog.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__syslog)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_syslog
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__timer_create.S b/libc/arch-arm/syscalls/__timer_create.S
index c547137fd..fcb4e3f2c 100644
--- a/libc/arch-arm/syscalls/__timer_create.S
+++ b/libc/arch-arm/syscalls/__timer_create.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_create)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_timer_create
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__timer_delete.S b/libc/arch-arm/syscalls/__timer_delete.S
index ca2e0a313..de303fc33 100644
--- a/libc/arch-arm/syscalls/__timer_delete.S
+++ b/libc/arch-arm/syscalls/__timer_delete.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_delete)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_timer_delete
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__timer_getoverrun.S b/libc/arch-arm/syscalls/__timer_getoverrun.S
index b0f18e777..a96b047aa 100644
--- a/libc/arch-arm/syscalls/__timer_getoverrun.S
+++ b/libc/arch-arm/syscalls/__timer_getoverrun.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_getoverrun)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_timer_getoverrun
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__timer_gettime.S b/libc/arch-arm/syscalls/__timer_gettime.S
index c172602a9..6e6bbf54e 100644
--- a/libc/arch-arm/syscalls/__timer_gettime.S
+++ b/libc/arch-arm/syscalls/__timer_gettime.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_gettime)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_timer_gettime
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__timer_settime.S b/libc/arch-arm/syscalls/__timer_settime.S
index 8220440fd..bcbe298ea 100644
--- a/libc/arch-arm/syscalls/__timer_settime.S
+++ b/libc/arch-arm/syscalls/__timer_settime.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__timer_settime)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_timer_settime
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/__wait4.S b/libc/arch-arm/syscalls/__wait4.S
index fa3450231..2a0e5c4db 100644
--- a/libc/arch-arm/syscalls/__wait4.S
+++ b/libc/arch-arm/syscalls/__wait4.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(__wait4)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_wait4
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/_exit.S b/libc/arch-arm/syscalls/_exit.S
index 77487b5d9..ab444ce3e 100644
--- a/libc/arch-arm/syscalls/_exit.S
+++ b/libc/arch-arm/syscalls/_exit.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(_exit)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_exit_group
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/_exit_thread.S b/libc/arch-arm/syscalls/_exit_thread.S
index bd16ff1e4..53a21fb93 100644
--- a/libc/arch-arm/syscalls/_exit_thread.S
+++ b/libc/arch-arm/syscalls/_exit_thread.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(_exit_thread)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_exit
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/accept.S b/libc/arch-arm/syscalls/accept.S
index 0dcfb0c8d..b1a2d72db 100644
--- a/libc/arch-arm/syscalls/accept.S
+++ b/libc/arch-arm/syscalls/accept.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(accept)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_accept
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/access.S b/libc/arch-arm/syscalls/access.S
index cf585a348..c0b033320 100644
--- a/libc/arch-arm/syscalls/access.S
+++ b/libc/arch-arm/syscalls/access.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(access)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_access
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/acct.S b/libc/arch-arm/syscalls/acct.S
index 85346e45e..5485be1cb 100644
--- a/libc/arch-arm/syscalls/acct.S
+++ b/libc/arch-arm/syscalls/acct.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(acct)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_acct
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/bind.S b/libc/arch-arm/syscalls/bind.S
index 85d047184..1bb58436b 100644
--- a/libc/arch-arm/syscalls/bind.S
+++ b/libc/arch-arm/syscalls/bind.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(bind)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_bind
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/cacheflush.S b/libc/arch-arm/syscalls/cacheflush.S
index 05b241176..fd7f68d31 100644
--- a/libc/arch-arm/syscalls/cacheflush.S
+++ b/libc/arch-arm/syscalls/cacheflush.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(cacheflush)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_ARM_cacheflush
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/capget.S b/libc/arch-arm/syscalls/capget.S
index 0f3ba317f..1f425a026 100644
--- a/libc/arch-arm/syscalls/capget.S
+++ b/libc/arch-arm/syscalls/capget.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(capget)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_capget
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/capset.S b/libc/arch-arm/syscalls/capset.S
index 2254db207..13ebd5a27 100644
--- a/libc/arch-arm/syscalls/capset.S
+++ b/libc/arch-arm/syscalls/capset.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(capset)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_capset
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/chdir.S b/libc/arch-arm/syscalls/chdir.S
index 57d6b139d..4965495aa 100644
--- a/libc/arch-arm/syscalls/chdir.S
+++ b/libc/arch-arm/syscalls/chdir.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(chdir)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_chdir
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/chmod.S b/libc/arch-arm/syscalls/chmod.S
index 8909c6f62..ed9d52fba 100644
--- a/libc/arch-arm/syscalls/chmod.S
+++ b/libc/arch-arm/syscalls/chmod.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(chmod)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_chmod
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/chown.S b/libc/arch-arm/syscalls/chown.S
index cbbd8a846..ff1cec289 100644
--- a/libc/arch-arm/syscalls/chown.S
+++ b/libc/arch-arm/syscalls/chown.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(chown)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_chown32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/chroot.S b/libc/arch-arm/syscalls/chroot.S
index a679172b8..bc8e3fe83 100644
--- a/libc/arch-arm/syscalls/chroot.S
+++ b/libc/arch-arm/syscalls/chroot.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(chroot)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_chroot
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/clock_getres.S b/libc/arch-arm/syscalls/clock_getres.S
index 705f2961d..66cf9ece8 100644
--- a/libc/arch-arm/syscalls/clock_getres.S
+++ b/libc/arch-arm/syscalls/clock_getres.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(clock_getres)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_clock_getres
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/clock_gettime.S b/libc/arch-arm/syscalls/clock_gettime.S
index a9ab41fbd..4e42c820f 100644
--- a/libc/arch-arm/syscalls/clock_gettime.S
+++ b/libc/arch-arm/syscalls/clock_gettime.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(clock_gettime)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_clock_gettime
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/clock_nanosleep.S b/libc/arch-arm/syscalls/clock_nanosleep.S
index f8e7f73f7..6d530a21f 100644
--- a/libc/arch-arm/syscalls/clock_nanosleep.S
+++ b/libc/arch-arm/syscalls/clock_nanosleep.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(clock_nanosleep)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_clock_nanosleep
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/clock_settime.S b/libc/arch-arm/syscalls/clock_settime.S
index a996441d5..e9374b5ee 100644
--- a/libc/arch-arm/syscalls/clock_settime.S
+++ b/libc/arch-arm/syscalls/clock_settime.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(clock_settime)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_clock_settime
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/close.S b/libc/arch-arm/syscalls/close.S
index 36d78a486..eb4cb6286 100644
--- a/libc/arch-arm/syscalls/close.S
+++ b/libc/arch-arm/syscalls/close.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(close)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_close
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/connect.S b/libc/arch-arm/syscalls/connect.S
index ea14c1773..b97b4fe3c 100644
--- a/libc/arch-arm/syscalls/connect.S
+++ b/libc/arch-arm/syscalls/connect.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(connect)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_connect
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/delete_module.S b/libc/arch-arm/syscalls/delete_module.S
index df8aae09d..09949943e 100644
--- a/libc/arch-arm/syscalls/delete_module.S
+++ b/libc/arch-arm/syscalls/delete_module.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(delete_module)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_delete_module
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/dup.S b/libc/arch-arm/syscalls/dup.S
index b0c1cdafa..88543420c 100644
--- a/libc/arch-arm/syscalls/dup.S
+++ b/libc/arch-arm/syscalls/dup.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(dup)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_dup
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/dup2.S b/libc/arch-arm/syscalls/dup2.S
index ed346d9e3..0dcc57fc7 100644
--- a/libc/arch-arm/syscalls/dup2.S
+++ b/libc/arch-arm/syscalls/dup2.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(dup2)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_dup2
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/epoll_create.S b/libc/arch-arm/syscalls/epoll_create.S
index 1aab6063f..92a2781f7 100644
--- a/libc/arch-arm/syscalls/epoll_create.S
+++ b/libc/arch-arm/syscalls/epoll_create.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(epoll_create)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_epoll_create
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/epoll_ctl.S b/libc/arch-arm/syscalls/epoll_ctl.S
index c0ecf06d8..b3c630fd0 100644
--- a/libc/arch-arm/syscalls/epoll_ctl.S
+++ b/libc/arch-arm/syscalls/epoll_ctl.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(epoll_ctl)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_epoll_ctl
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/epoll_wait.S b/libc/arch-arm/syscalls/epoll_wait.S
index 3535001f1..3ccac918c 100644
--- a/libc/arch-arm/syscalls/epoll_wait.S
+++ b/libc/arch-arm/syscalls/epoll_wait.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(epoll_wait)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_epoll_wait
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/eventfd.S b/libc/arch-arm/syscalls/eventfd.S
index 857b6c0e1..754f019fc 100644
--- a/libc/arch-arm/syscalls/eventfd.S
+++ b/libc/arch-arm/syscalls/eventfd.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(eventfd)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_eventfd2
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/execve.S b/libc/arch-arm/syscalls/execve.S
index 1a6616721..49e5b13f5 100644
--- a/libc/arch-arm/syscalls/execve.S
+++ b/libc/arch-arm/syscalls/execve.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(execve)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_execve
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/faccessat.S b/libc/arch-arm/syscalls/faccessat.S
index a2f176fdc..5ade5177b 100644
--- a/libc/arch-arm/syscalls/faccessat.S
+++ b/libc/arch-arm/syscalls/faccessat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(faccessat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_faccessat
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fchdir.S b/libc/arch-arm/syscalls/fchdir.S
index 7d80cf0d2..96a047dda 100644
--- a/libc/arch-arm/syscalls/fchdir.S
+++ b/libc/arch-arm/syscalls/fchdir.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fchdir)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fchdir
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fchmod.S b/libc/arch-arm/syscalls/fchmod.S
index bc8e64371..b096a8c17 100644
--- a/libc/arch-arm/syscalls/fchmod.S
+++ b/libc/arch-arm/syscalls/fchmod.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fchmod)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fchmod
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fchmodat.S b/libc/arch-arm/syscalls/fchmodat.S
index ac782e588..8c87598cc 100644
--- a/libc/arch-arm/syscalls/fchmodat.S
+++ b/libc/arch-arm/syscalls/fchmodat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fchmodat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fchmodat
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fchown.S b/libc/arch-arm/syscalls/fchown.S
index 22d7fd278..2f7e92bc0 100644
--- a/libc/arch-arm/syscalls/fchown.S
+++ b/libc/arch-arm/syscalls/fchown.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fchown)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fchown32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fdatasync.S b/libc/arch-arm/syscalls/fdatasync.S
index d41e8236c..31818c889 100644
--- a/libc/arch-arm/syscalls/fdatasync.S
+++ b/libc/arch-arm/syscalls/fdatasync.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fdatasync)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fdatasync
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fgetxattr.S b/libc/arch-arm/syscalls/fgetxattr.S
index 32b8ef852..6f3eb3dac 100644
--- a/libc/arch-arm/syscalls/fgetxattr.S
+++ b/libc/arch-arm/syscalls/fgetxattr.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fgetxattr)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fgetxattr
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/flistxattr.S b/libc/arch-arm/syscalls/flistxattr.S
index 0785e7775..38e856d0b 100644
--- a/libc/arch-arm/syscalls/flistxattr.S
+++ b/libc/arch-arm/syscalls/flistxattr.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(flistxattr)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_flistxattr
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/flock.S b/libc/arch-arm/syscalls/flock.S
index c0d2844d1..3732bfe85 100644
--- a/libc/arch-arm/syscalls/flock.S
+++ b/libc/arch-arm/syscalls/flock.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(flock)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_flock
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fremovexattr.S b/libc/arch-arm/syscalls/fremovexattr.S
index ae97d13d2..45cf803a7 100644
--- a/libc/arch-arm/syscalls/fremovexattr.S
+++ b/libc/arch-arm/syscalls/fremovexattr.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fremovexattr)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fremovexattr
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fstat.S b/libc/arch-arm/syscalls/fstat.S
index e75649fae..d31421339 100644
--- a/libc/arch-arm/syscalls/fstat.S
+++ b/libc/arch-arm/syscalls/fstat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fstat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fstat64
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fstatat.S b/libc/arch-arm/syscalls/fstatat.S
index 065ef9fde..8cf1a5718 100644
--- a/libc/arch-arm/syscalls/fstatat.S
+++ b/libc/arch-arm/syscalls/fstatat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fstatat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fstatat64
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/fsync.S b/libc/arch-arm/syscalls/fsync.S
index f0de9ca90..52cfa539a 100644
--- a/libc/arch-arm/syscalls/fsync.S
+++ b/libc/arch-arm/syscalls/fsync.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(fsync)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_fsync
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/ftruncate.S b/libc/arch-arm/syscalls/ftruncate.S
index 2e4a30818..14cd87df4 100644
--- a/libc/arch-arm/syscalls/ftruncate.S
+++ b/libc/arch-arm/syscalls/ftruncate.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(ftruncate)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_ftruncate
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/ftruncate64.S b/libc/arch-arm/syscalls/ftruncate64.S
index 7c7b80b6e..0e1b42b98 100644
--- a/libc/arch-arm/syscalls/ftruncate64.S
+++ b/libc/arch-arm/syscalls/ftruncate64.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(ftruncate64)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_ftruncate64
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getdents.S b/libc/arch-arm/syscalls/getdents.S
index 82b6e4cbf..e6c3028bd 100644
--- a/libc/arch-arm/syscalls/getdents.S
+++ b/libc/arch-arm/syscalls/getdents.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getdents)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getdents64
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getegid.S b/libc/arch-arm/syscalls/getegid.S
index 27ea27244..22794d19b 100644
--- a/libc/arch-arm/syscalls/getegid.S
+++ b/libc/arch-arm/syscalls/getegid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getegid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getegid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/geteuid.S b/libc/arch-arm/syscalls/geteuid.S
index d4c9cd160..cfb318f69 100644
--- a/libc/arch-arm/syscalls/geteuid.S
+++ b/libc/arch-arm/syscalls/geteuid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(geteuid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_geteuid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getgid.S b/libc/arch-arm/syscalls/getgid.S
index 9a40fe6a8..085061e0e 100644
--- a/libc/arch-arm/syscalls/getgid.S
+++ b/libc/arch-arm/syscalls/getgid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getgid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getgid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getgroups.S b/libc/arch-arm/syscalls/getgroups.S
index 2995cc8fd..c426d8728 100644
--- a/libc/arch-arm/syscalls/getgroups.S
+++ b/libc/arch-arm/syscalls/getgroups.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getgroups)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getgroups32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getitimer.S b/libc/arch-arm/syscalls/getitimer.S
index a3f14234a..5d832d99b 100644
--- a/libc/arch-arm/syscalls/getitimer.S
+++ b/libc/arch-arm/syscalls/getitimer.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getitimer)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getitimer
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getpeername.S b/libc/arch-arm/syscalls/getpeername.S
index f90c34495..ced69f7d5 100644
--- a/libc/arch-arm/syscalls/getpeername.S
+++ b/libc/arch-arm/syscalls/getpeername.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getpeername)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getpeername
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getpgid.S b/libc/arch-arm/syscalls/getpgid.S
index 0fc57a40c..d599f1e40 100644
--- a/libc/arch-arm/syscalls/getpgid.S
+++ b/libc/arch-arm/syscalls/getpgid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getpgid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getpgid
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getpid.S b/libc/arch-arm/syscalls/getpid.S
index 440ae9bfa..ef19d2593 100644
--- a/libc/arch-arm/syscalls/getpid.S
+++ b/libc/arch-arm/syscalls/getpid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getpid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getpid
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getppid.S b/libc/arch-arm/syscalls/getppid.S
index 3eb1b8662..1fe30d48d 100644
--- a/libc/arch-arm/syscalls/getppid.S
+++ b/libc/arch-arm/syscalls/getppid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getppid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getppid
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getresgid.S b/libc/arch-arm/syscalls/getresgid.S
index a022341ad..e8d2129f5 100644
--- a/libc/arch-arm/syscalls/getresgid.S
+++ b/libc/arch-arm/syscalls/getresgid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getresgid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getresgid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getresuid.S b/libc/arch-arm/syscalls/getresuid.S
index 23112a6ab..cdfe0f7c7 100644
--- a/libc/arch-arm/syscalls/getresuid.S
+++ b/libc/arch-arm/syscalls/getresuid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getresuid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getresuid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getrlimit.S b/libc/arch-arm/syscalls/getrlimit.S
index 8b1c0891f..3acbf9593 100644
--- a/libc/arch-arm/syscalls/getrlimit.S
+++ b/libc/arch-arm/syscalls/getrlimit.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getrlimit)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_ugetrlimit
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getrusage.S b/libc/arch-arm/syscalls/getrusage.S
index 74fa20bfd..e17fc4a8b 100644
--- a/libc/arch-arm/syscalls/getrusage.S
+++ b/libc/arch-arm/syscalls/getrusage.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getrusage)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getrusage
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getsid.S b/libc/arch-arm/syscalls/getsid.S
index 856d41a5c..06e6d6789 100644
--- a/libc/arch-arm/syscalls/getsid.S
+++ b/libc/arch-arm/syscalls/getsid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getsid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getsid
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getsockname.S b/libc/arch-arm/syscalls/getsockname.S
index 99470e2a2..458814fd7 100644
--- a/libc/arch-arm/syscalls/getsockname.S
+++ b/libc/arch-arm/syscalls/getsockname.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getsockname)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getsockname
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/gettid.S b/libc/arch-arm/syscalls/gettid.S
index f5b15be2a..f35c7eac3 100644
--- a/libc/arch-arm/syscalls/gettid.S
+++ b/libc/arch-arm/syscalls/gettid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(gettid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_gettid
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/gettimeofday.S b/libc/arch-arm/syscalls/gettimeofday.S
index 9b47daffc..113413e50 100644
--- a/libc/arch-arm/syscalls/gettimeofday.S
+++ b/libc/arch-arm/syscalls/gettimeofday.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(gettimeofday)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_gettimeofday
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getuid.S b/libc/arch-arm/syscalls/getuid.S
index 053dc316b..20ed7f982 100644
--- a/libc/arch-arm/syscalls/getuid.S
+++ b/libc/arch-arm/syscalls/getuid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getuid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getuid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/getxattr.S b/libc/arch-arm/syscalls/getxattr.S
index 18532ce71..0a7cbef3a 100644
--- a/libc/arch-arm/syscalls/getxattr.S
+++ b/libc/arch-arm/syscalls/getxattr.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(getxattr)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_getxattr
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/init_module.S b/libc/arch-arm/syscalls/init_module.S
index 73beb467b..de41a7e44 100644
--- a/libc/arch-arm/syscalls/init_module.S
+++ b/libc/arch-arm/syscalls/init_module.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(init_module)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_init_module
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/inotify_add_watch.S b/libc/arch-arm/syscalls/inotify_add_watch.S
index da4a29661..aa8fcb7f2 100644
--- a/libc/arch-arm/syscalls/inotify_add_watch.S
+++ b/libc/arch-arm/syscalls/inotify_add_watch.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(inotify_add_watch)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_inotify_add_watch
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/inotify_init.S b/libc/arch-arm/syscalls/inotify_init.S
index bac124c76..56d4b9394 100644
--- a/libc/arch-arm/syscalls/inotify_init.S
+++ b/libc/arch-arm/syscalls/inotify_init.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(inotify_init)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_inotify_init
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/inotify_rm_watch.S b/libc/arch-arm/syscalls/inotify_rm_watch.S
index f5764808b..431506108 100644
--- a/libc/arch-arm/syscalls/inotify_rm_watch.S
+++ b/libc/arch-arm/syscalls/inotify_rm_watch.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(inotify_rm_watch)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_inotify_rm_watch
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/ioprio_get.S b/libc/arch-arm/syscalls/ioprio_get.S
index 13739dc55..d3bd7968a 100644
--- a/libc/arch-arm/syscalls/ioprio_get.S
+++ b/libc/arch-arm/syscalls/ioprio_get.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(ioprio_get)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_ioprio_get
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/ioprio_set.S b/libc/arch-arm/syscalls/ioprio_set.S
index 7e40ee520..c42d3051e 100644
--- a/libc/arch-arm/syscalls/ioprio_set.S
+++ b/libc/arch-arm/syscalls/ioprio_set.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(ioprio_set)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_ioprio_set
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/klogctl.S b/libc/arch-arm/syscalls/klogctl.S
index 5434b3028..13568156c 100644
--- a/libc/arch-arm/syscalls/klogctl.S
+++ b/libc/arch-arm/syscalls/klogctl.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(klogctl)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_syslog
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/lchown.S b/libc/arch-arm/syscalls/lchown.S
index 789e5af9e..56902a312 100644
--- a/libc/arch-arm/syscalls/lchown.S
+++ b/libc/arch-arm/syscalls/lchown.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(lchown)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_lchown32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/lgetxattr.S b/libc/arch-arm/syscalls/lgetxattr.S
index 61fc09825..cc30d63e3 100644
--- a/libc/arch-arm/syscalls/lgetxattr.S
+++ b/libc/arch-arm/syscalls/lgetxattr.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(lgetxattr)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_lgetxattr
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/link.S b/libc/arch-arm/syscalls/link.S
index ccf0a1d3f..dab8fa69d 100644
--- a/libc/arch-arm/syscalls/link.S
+++ b/libc/arch-arm/syscalls/link.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(link)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_link
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/listen.S b/libc/arch-arm/syscalls/listen.S
index bb7f7a44c..fac37024c 100644
--- a/libc/arch-arm/syscalls/listen.S
+++ b/libc/arch-arm/syscalls/listen.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(listen)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_listen
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/listxattr.S b/libc/arch-arm/syscalls/listxattr.S
index 6bbdb6ac0..8c7fc9b83 100644
--- a/libc/arch-arm/syscalls/listxattr.S
+++ b/libc/arch-arm/syscalls/listxattr.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(listxattr)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_listxattr
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/llistxattr.S b/libc/arch-arm/syscalls/llistxattr.S
index 89682df63..9cade1805 100644
--- a/libc/arch-arm/syscalls/llistxattr.S
+++ b/libc/arch-arm/syscalls/llistxattr.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(llistxattr)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_llistxattr
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/lremovexattr.S b/libc/arch-arm/syscalls/lremovexattr.S
index 62f6722dd..d4a7b8212 100644
--- a/libc/arch-arm/syscalls/lremovexattr.S
+++ b/libc/arch-arm/syscalls/lremovexattr.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(lremovexattr)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_lremovexattr
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/lseek.S b/libc/arch-arm/syscalls/lseek.S
index 2cd08536c..a45285611 100644
--- a/libc/arch-arm/syscalls/lseek.S
+++ b/libc/arch-arm/syscalls/lseek.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(lseek)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_lseek
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/lstat.S b/libc/arch-arm/syscalls/lstat.S
index dbecefe0d..69f21461f 100644
--- a/libc/arch-arm/syscalls/lstat.S
+++ b/libc/arch-arm/syscalls/lstat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(lstat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_lstat64
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/madvise.S b/libc/arch-arm/syscalls/madvise.S
index 024476fbd..02944a2bd 100644
--- a/libc/arch-arm/syscalls/madvise.S
+++ b/libc/arch-arm/syscalls/madvise.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(madvise)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_madvise
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/mincore.S b/libc/arch-arm/syscalls/mincore.S
index 7a2a378ed..5ffdc1144 100644
--- a/libc/arch-arm/syscalls/mincore.S
+++ b/libc/arch-arm/syscalls/mincore.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(mincore)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_mincore
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/mkdir.S b/libc/arch-arm/syscalls/mkdir.S
index e51beab20..c2aa08034 100644
--- a/libc/arch-arm/syscalls/mkdir.S
+++ b/libc/arch-arm/syscalls/mkdir.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(mkdir)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_mkdir
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/mkdirat.S b/libc/arch-arm/syscalls/mkdirat.S
index 52f0be339..421c70a62 100644
--- a/libc/arch-arm/syscalls/mkdirat.S
+++ b/libc/arch-arm/syscalls/mkdirat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(mkdirat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_mkdirat
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/mknod.S b/libc/arch-arm/syscalls/mknod.S
index ac6d97647..4aca2c557 100644
--- a/libc/arch-arm/syscalls/mknod.S
+++ b/libc/arch-arm/syscalls/mknod.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(mknod)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_mknod
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/mlock.S b/libc/arch-arm/syscalls/mlock.S
index ad140d123..5c8e74d9e 100644
--- a/libc/arch-arm/syscalls/mlock.S
+++ b/libc/arch-arm/syscalls/mlock.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(mlock)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_mlock
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/mlockall.S b/libc/arch-arm/syscalls/mlockall.S
index 45c782e33..a89545aa8 100644
--- a/libc/arch-arm/syscalls/mlockall.S
+++ b/libc/arch-arm/syscalls/mlockall.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(mlockall)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_mlockall
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/mprotect.S b/libc/arch-arm/syscalls/mprotect.S
index 39ae3531e..06238bfa3 100644
--- a/libc/arch-arm/syscalls/mprotect.S
+++ b/libc/arch-arm/syscalls/mprotect.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(mprotect)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_mprotect
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/mremap.S b/libc/arch-arm/syscalls/mremap.S
index 918f3b708..29b308b3d 100644
--- a/libc/arch-arm/syscalls/mremap.S
+++ b/libc/arch-arm/syscalls/mremap.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(mremap)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_mremap
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/msync.S b/libc/arch-arm/syscalls/msync.S
index 2a5922c67..af8fc0c6f 100644
--- a/libc/arch-arm/syscalls/msync.S
+++ b/libc/arch-arm/syscalls/msync.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(msync)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_msync
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/munlock.S b/libc/arch-arm/syscalls/munlock.S
index 5a02aaf00..42df37e94 100644
--- a/libc/arch-arm/syscalls/munlock.S
+++ b/libc/arch-arm/syscalls/munlock.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(munlock)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_munlock
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/munlockall.S b/libc/arch-arm/syscalls/munlockall.S
index 810696514..c0fca3312 100644
--- a/libc/arch-arm/syscalls/munlockall.S
+++ b/libc/arch-arm/syscalls/munlockall.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(munlockall)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_munlockall
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/munmap.S b/libc/arch-arm/syscalls/munmap.S
index 6bb8dd8a8..9d7b60f38 100644
--- a/libc/arch-arm/syscalls/munmap.S
+++ b/libc/arch-arm/syscalls/munmap.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(munmap)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_munmap
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/nanosleep.S b/libc/arch-arm/syscalls/nanosleep.S
index af36ced75..7f4cda694 100644
--- a/libc/arch-arm/syscalls/nanosleep.S
+++ b/libc/arch-arm/syscalls/nanosleep.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(nanosleep)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_nanosleep
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/pause.S b/libc/arch-arm/syscalls/pause.S
index e64f4f337..1238f4bb7 100644
--- a/libc/arch-arm/syscalls/pause.S
+++ b/libc/arch-arm/syscalls/pause.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(pause)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_pause
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/personality.S b/libc/arch-arm/syscalls/personality.S
index 17ac68661..f338d7156 100644
--- a/libc/arch-arm/syscalls/personality.S
+++ b/libc/arch-arm/syscalls/personality.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(personality)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_personality
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/pipe.S b/libc/arch-arm/syscalls/pipe.S
index 396870311..ec0efb1ab 100644
--- a/libc/arch-arm/syscalls/pipe.S
+++ b/libc/arch-arm/syscalls/pipe.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(pipe)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_pipe
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/pipe2.S b/libc/arch-arm/syscalls/pipe2.S
index da2ecba3d..f79c8f509 100644
--- a/libc/arch-arm/syscalls/pipe2.S
+++ b/libc/arch-arm/syscalls/pipe2.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(pipe2)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_pipe2
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/poll.S b/libc/arch-arm/syscalls/poll.S
index 4d345ea27..d9831aba4 100644
--- a/libc/arch-arm/syscalls/poll.S
+++ b/libc/arch-arm/syscalls/poll.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(poll)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_poll
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/read.S b/libc/arch-arm/syscalls/read.S
index c062388cb..ab0583a19 100644
--- a/libc/arch-arm/syscalls/read.S
+++ b/libc/arch-arm/syscalls/read.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(read)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_read
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/readlink.S b/libc/arch-arm/syscalls/readlink.S
index 7602e6178..90b0ea680 100644
--- a/libc/arch-arm/syscalls/readlink.S
+++ b/libc/arch-arm/syscalls/readlink.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(readlink)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_readlink
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/readv.S b/libc/arch-arm/syscalls/readv.S
index e717e6161..9f8b8db28 100644
--- a/libc/arch-arm/syscalls/readv.S
+++ b/libc/arch-arm/syscalls/readv.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(readv)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_readv
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/recvmsg.S b/libc/arch-arm/syscalls/recvmsg.S
index 5c168dc68..00746a1f9 100644
--- a/libc/arch-arm/syscalls/recvmsg.S
+++ b/libc/arch-arm/syscalls/recvmsg.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(recvmsg)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_recvmsg
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/removexattr.S b/libc/arch-arm/syscalls/removexattr.S
index 1a44caf24..82fb9e088 100644
--- a/libc/arch-arm/syscalls/removexattr.S
+++ b/libc/arch-arm/syscalls/removexattr.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(removexattr)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_removexattr
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/rename.S b/libc/arch-arm/syscalls/rename.S
index 930ddb6dc..dfe0b0ef1 100644
--- a/libc/arch-arm/syscalls/rename.S
+++ b/libc/arch-arm/syscalls/rename.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(rename)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_rename
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/renameat.S b/libc/arch-arm/syscalls/renameat.S
index a13c4ee55..aa42b7839 100644
--- a/libc/arch-arm/syscalls/renameat.S
+++ b/libc/arch-arm/syscalls/renameat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(renameat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_renameat
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/rmdir.S b/libc/arch-arm/syscalls/rmdir.S
index 09a956f59..c2d5c5adb 100644
--- a/libc/arch-arm/syscalls/rmdir.S
+++ b/libc/arch-arm/syscalls/rmdir.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(rmdir)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_rmdir
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sched_get_priority_max.S b/libc/arch-arm/syscalls/sched_get_priority_max.S
index 2dea3b790..703ddeb71 100644
--- a/libc/arch-arm/syscalls/sched_get_priority_max.S
+++ b/libc/arch-arm/syscalls/sched_get_priority_max.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sched_get_priority_max)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_get_priority_max
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sched_get_priority_min.S b/libc/arch-arm/syscalls/sched_get_priority_min.S
index de8b8788b..deea8ae01 100644
--- a/libc/arch-arm/syscalls/sched_get_priority_min.S
+++ b/libc/arch-arm/syscalls/sched_get_priority_min.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sched_get_priority_min)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_get_priority_min
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sched_getparam.S b/libc/arch-arm/syscalls/sched_getparam.S
index 6434217d7..194d4a2a3 100644
--- a/libc/arch-arm/syscalls/sched_getparam.S
+++ b/libc/arch-arm/syscalls/sched_getparam.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sched_getparam)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_getparam
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sched_getscheduler.S b/libc/arch-arm/syscalls/sched_getscheduler.S
index 8e45ce629..fd3cec588 100644
--- a/libc/arch-arm/syscalls/sched_getscheduler.S
+++ b/libc/arch-arm/syscalls/sched_getscheduler.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sched_getscheduler)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_getscheduler
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sched_rr_get_interval.S b/libc/arch-arm/syscalls/sched_rr_get_interval.S
index e88d26ee9..21a578880 100644
--- a/libc/arch-arm/syscalls/sched_rr_get_interval.S
+++ b/libc/arch-arm/syscalls/sched_rr_get_interval.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sched_rr_get_interval)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_rr_get_interval
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sched_setaffinity.S b/libc/arch-arm/syscalls/sched_setaffinity.S
index b9dd299db..c980ed05b 100644
--- a/libc/arch-arm/syscalls/sched_setaffinity.S
+++ b/libc/arch-arm/syscalls/sched_setaffinity.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sched_setaffinity)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_setaffinity
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sched_setparam.S b/libc/arch-arm/syscalls/sched_setparam.S
index 73d6ab68e..993078d91 100644
--- a/libc/arch-arm/syscalls/sched_setparam.S
+++ b/libc/arch-arm/syscalls/sched_setparam.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sched_setparam)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_setparam
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sched_setscheduler.S b/libc/arch-arm/syscalls/sched_setscheduler.S
index 33c28abf5..d0ac1dec2 100644
--- a/libc/arch-arm/syscalls/sched_setscheduler.S
+++ b/libc/arch-arm/syscalls/sched_setscheduler.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sched_setscheduler)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_setscheduler
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sched_yield.S b/libc/arch-arm/syscalls/sched_yield.S
index 71628b34e..00bdfbd6a 100644
--- a/libc/arch-arm/syscalls/sched_yield.S
+++ b/libc/arch-arm/syscalls/sched_yield.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sched_yield)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sched_yield
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sendfile.S b/libc/arch-arm/syscalls/sendfile.S
index 2790b4b87..9e4c70c89 100644
--- a/libc/arch-arm/syscalls/sendfile.S
+++ b/libc/arch-arm/syscalls/sendfile.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sendfile)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sendfile
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sendmsg.S b/libc/arch-arm/syscalls/sendmsg.S
index 99b547925..1b54aeebb 100644
--- a/libc/arch-arm/syscalls/sendmsg.S
+++ b/libc/arch-arm/syscalls/sendmsg.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sendmsg)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sendmsg
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/setgid.S b/libc/arch-arm/syscalls/setgid.S
index f28687df7..09045ad34 100644
--- a/libc/arch-arm/syscalls/setgid.S
+++ b/libc/arch-arm/syscalls/setgid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(setgid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setgid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/setgroups.S b/libc/arch-arm/syscalls/setgroups.S
index d2c932f31..e4c36b5c3 100644
--- a/libc/arch-arm/syscalls/setgroups.S
+++ b/libc/arch-arm/syscalls/setgroups.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(setgroups)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setgroups32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/setitimer.S b/libc/arch-arm/syscalls/setitimer.S
index c6b506448..dfb7a467f 100644
--- a/libc/arch-arm/syscalls/setitimer.S
+++ b/libc/arch-arm/syscalls/setitimer.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(setitimer)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setitimer
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/setpgid.S b/libc/arch-arm/syscalls/setpgid.S
index 39e1e03b0..c558063d5 100644
--- a/libc/arch-arm/syscalls/setpgid.S
+++ b/libc/arch-arm/syscalls/setpgid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(setpgid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setpgid
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/setpriority.S b/libc/arch-arm/syscalls/setpriority.S
index 5cb84a82d..683da340d 100644
--- a/libc/arch-arm/syscalls/setpriority.S
+++ b/libc/arch-arm/syscalls/setpriority.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(setpriority)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setpriority
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/setregid.S b/libc/arch-arm/syscalls/setregid.S
index bc79e9ed3..2062d05da 100644
--- a/libc/arch-arm/syscalls/setregid.S
+++ b/libc/arch-arm/syscalls/setregid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(setregid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setregid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/setresgid.S b/libc/arch-arm/syscalls/setresgid.S
index 711626e72..089c7a74d 100644
--- a/libc/arch-arm/syscalls/setresgid.S
+++ b/libc/arch-arm/syscalls/setresgid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(setresgid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setresgid32
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/setrlimit.S b/libc/arch-arm/syscalls/setrlimit.S
index 0fe246701..02b8db45c 100644
--- a/libc/arch-arm/syscalls/setrlimit.S
+++ b/libc/arch-arm/syscalls/setrlimit.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(setrlimit)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setrlimit
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/setsid.S b/libc/arch-arm/syscalls/setsid.S
index f11b6fb9e..d82c34776 100644
--- a/libc/arch-arm/syscalls/setsid.S
+++ b/libc/arch-arm/syscalls/setsid.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(setsid)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_setsid
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/settimeofday.S b/libc/arch-arm/syscalls/settimeofday.S
index 2741e0502..44f5e6635 100644
--- a/libc/arch-arm/syscalls/settimeofday.S
+++ b/libc/arch-arm/syscalls/settimeofday.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(settimeofday)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_settimeofday
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/shutdown.S b/libc/arch-arm/syscalls/shutdown.S
index 080263110..cc96f5698 100644
--- a/libc/arch-arm/syscalls/shutdown.S
+++ b/libc/arch-arm/syscalls/shutdown.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(shutdown)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_shutdown
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sigaction.S b/libc/arch-arm/syscalls/sigaction.S
index 04a8b94b9..699f55d8c 100644
--- a/libc/arch-arm/syscalls/sigaction.S
+++ b/libc/arch-arm/syscalls/sigaction.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sigaction)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sigaction
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sigaltstack.S b/libc/arch-arm/syscalls/sigaltstack.S
index b541a87ab..0f34eabc0 100644
--- a/libc/arch-arm/syscalls/sigaltstack.S
+++ b/libc/arch-arm/syscalls/sigaltstack.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sigaltstack)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sigaltstack
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/signalfd4.S b/libc/arch-arm/syscalls/signalfd4.S
index 1ec705510..6f07fbe13 100644
--- a/libc/arch-arm/syscalls/signalfd4.S
+++ b/libc/arch-arm/syscalls/signalfd4.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(signalfd4)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_signalfd4
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sigpending.S b/libc/arch-arm/syscalls/sigpending.S
index 4c7d91990..b5412887f 100644
--- a/libc/arch-arm/syscalls/sigpending.S
+++ b/libc/arch-arm/syscalls/sigpending.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sigpending)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sigpending
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sigprocmask.S b/libc/arch-arm/syscalls/sigprocmask.S
index 7c59a6bba..d1694743c 100644
--- a/libc/arch-arm/syscalls/sigprocmask.S
+++ b/libc/arch-arm/syscalls/sigprocmask.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sigprocmask)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sigprocmask
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/socket.S b/libc/arch-arm/syscalls/socket.S
index e28d2525d..1003bd4f8 100644
--- a/libc/arch-arm/syscalls/socket.S
+++ b/libc/arch-arm/syscalls/socket.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(socket)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_socket
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/socketpair.S b/libc/arch-arm/syscalls/socketpair.S
index e6990008f..65bef6853 100644
--- a/libc/arch-arm/syscalls/socketpair.S
+++ b/libc/arch-arm/syscalls/socketpair.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(socketpair)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_socketpair
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/stat.S b/libc/arch-arm/syscalls/stat.S
index a4669a623..17b63ccdd 100644
--- a/libc/arch-arm/syscalls/stat.S
+++ b/libc/arch-arm/syscalls/stat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(stat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_stat64
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/symlink.S b/libc/arch-arm/syscalls/symlink.S
index 14a753fdb..ac569afed 100644
--- a/libc/arch-arm/syscalls/symlink.S
+++ b/libc/arch-arm/syscalls/symlink.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(symlink)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_symlink
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sync.S b/libc/arch-arm/syscalls/sync.S
index 68c0c0fe8..ef6cb169b 100644
--- a/libc/arch-arm/syscalls/sync.S
+++ b/libc/arch-arm/syscalls/sync.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sync)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sync
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/sysinfo.S b/libc/arch-arm/syscalls/sysinfo.S
index 2a2fb5981..a8917354d 100644
--- a/libc/arch-arm/syscalls/sysinfo.S
+++ b/libc/arch-arm/syscalls/sysinfo.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(sysinfo)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_sysinfo
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/times.S b/libc/arch-arm/syscalls/times.S
index aacb4caa4..051f34db4 100644
--- a/libc/arch-arm/syscalls/times.S
+++ b/libc/arch-arm/syscalls/times.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(times)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_times
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/truncate.S b/libc/arch-arm/syscalls/truncate.S
index 8c0b24f4c..3bb68cd06 100644
--- a/libc/arch-arm/syscalls/truncate.S
+++ b/libc/arch-arm/syscalls/truncate.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(truncate)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_truncate
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/umask.S b/libc/arch-arm/syscalls/umask.S
index a7bc20b96..78e43e0f2 100644
--- a/libc/arch-arm/syscalls/umask.S
+++ b/libc/arch-arm/syscalls/umask.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(umask)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_umask
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/umount2.S b/libc/arch-arm/syscalls/umount2.S
index 04b28f41c..605359e8c 100644
--- a/libc/arch-arm/syscalls/umount2.S
+++ b/libc/arch-arm/syscalls/umount2.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(umount2)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_umount2
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/uname.S b/libc/arch-arm/syscalls/uname.S
index 4a6f0f4b3..db0860b06 100644
--- a/libc/arch-arm/syscalls/uname.S
+++ b/libc/arch-arm/syscalls/uname.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(uname)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_uname
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/unlink.S b/libc/arch-arm/syscalls/unlink.S
index 87fa79e7e..8ef33dfd2 100644
--- a/libc/arch-arm/syscalls/unlink.S
+++ b/libc/arch-arm/syscalls/unlink.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(unlink)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_unlink
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/unlinkat.S b/libc/arch-arm/syscalls/unlinkat.S
index 3beae6c16..eb822e49a 100644
--- a/libc/arch-arm/syscalls/unlinkat.S
+++ b/libc/arch-arm/syscalls/unlinkat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(unlinkat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_unlinkat
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/unshare.S b/libc/arch-arm/syscalls/unshare.S
index 0a92b2105..ec77f3ad9 100644
--- a/libc/arch-arm/syscalls/unshare.S
+++ b/libc/arch-arm/syscalls/unshare.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(unshare)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_unshare
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/utimensat.S b/libc/arch-arm/syscalls/utimensat.S
index ceae7fafd..976a667a3 100644
--- a/libc/arch-arm/syscalls/utimensat.S
+++ b/libc/arch-arm/syscalls/utimensat.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(utimensat)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_utimensat
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/utimes.S b/libc/arch-arm/syscalls/utimes.S
index a2d58a3c1..8966626f5 100644
--- a/libc/arch-arm/syscalls/utimes.S
+++ b/libc/arch-arm/syscalls/utimes.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(utimes)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_utimes
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/vfork.S b/libc/arch-arm/syscalls/vfork.S
index 3bd26683c..89cbda2ca 100644
--- a/libc/arch-arm/syscalls/vfork.S
+++ b/libc/arch-arm/syscalls/vfork.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(vfork)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_vfork
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/write.S b/libc/arch-arm/syscalls/write.S
index 826e82c99..c25791585 100644
--- a/libc/arch-arm/syscalls/write.S
+++ b/libc/arch-arm/syscalls/write.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(write)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_write
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/arch-arm/syscalls/writev.S b/libc/arch-arm/syscalls/writev.S
index 16a6df90c..521e10cda 100644
--- a/libc/arch-arm/syscalls/writev.S
+++ b/libc/arch-arm/syscalls/writev.S
@@ -3,11 +3,10 @@
#include <sys/linux-syscalls.h>
ENTRY(writev)
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =__NR_writev
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 21d2f1d1a..0226acd3c 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -111,11 +111,10 @@ arm_call_long = arm_header + """\
""" + arm_footer
arm_eabi_call_default = arm_header + """\
- .save {r4, r7}
- stmfd sp!, {r4, r7}
+ mov ip, r7
ldr r7, =%(idname)s
swi #0
- ldmfd sp!, {r4, r7}
+ mov r7, ip
movs r0, r0
bxpl lr
b __set_syscall_errno