arm syscall : for eabi call_default don't use stack
In the default case, we don't need to use the stack, we can save r7 with
ip register (that what does eglibc).
This allow to fix vfork data corruption
(see 3884bfe9661955543ce203c60f9225bbdf33f6bb), because vfork now don't
use the stack.
diff --git a/libc/arch-arm/syscalls/__brk.S b/libc/arch-arm/syscalls/__brk.S
index a0854a0..e4fcab0 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 067ee9a..ee82ef1 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 3d39567..96cc16b 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 6cf08ad..9df9702 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 e8aa2f4..6e90214 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 78271eb..7976b06 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 e09a484..6fc2d64 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 30e335c..6fb2a43 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 554809f..56fd607 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 be2f4bf..589d5ad 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 4d91780..10c30d3 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 04e0a30..72acd70 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 e75df45..07898a0 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 57a3149..31d4c1e 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 8220825..640a7ee 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 bce63ed..ad725af 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 bdd4517..bee1674 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 cf5d6b6..3039b35 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 d5053ba..1877bbf 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 9cd51f6..2129cb2 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 88dc58e..9df2f89 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 1ececb7..8f1ff55 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 4afef71..f8d63a3 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 6dbe745..8ad0271 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 c547137..fcb4e3f 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 ca2e0a3..de303fc 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 b0f18e7..a96b047 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 c172602..6e6bbf5 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 8220440..bcbe298 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 fa34502..2a0e5c4 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 77487b5..ab444ce 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 bd16ff1..53a21fb 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 0dcfb0c..b1a2d72 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 cf585a3..c0b0333 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 85346e4..5485be1 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 85d0471..1bb5843 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 05b2411..fd7f68d 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 0f3ba31..1f425a0 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 2254db2..13ebd5a 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 57d6b13..4965495 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 8909c6f..ed9d52f 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 cbbd8a8..ff1cec2 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 a679172..bc8e3fe 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 705f296..66cf9ec 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 a9ab41f..4e42c82 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 f8e7f73..6d530a2 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 a996441..e9374b5 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 36d78a4..eb4cb62 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 ea14c17..b97b4fe 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 df8aae0..0994994 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 b0c1cda..8854342 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 ed346d9..0dcc57f 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 1aab606..92a2781 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 c0ecf06..b3c630f 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 3535001..3ccac91 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 857b6c0..754f019 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 1a66167..49e5b13 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 a2f176f..5ade517 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 7d80cf0..96a047d 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 bc8e643..b096a8c 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 ac782e5..8c87598 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 22d7fd2..2f7e92b 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 d41e823..31818c8 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 32b8ef8..6f3eb3d 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 0785e77..38e856d 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 c0d2844..3732bfe 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 ae97d13..45cf803 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 e75649f..d314213 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 065ef9f..8cf1a57 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 f0de9ca..52cfa53 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 2e4a308..14cd87d 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 7c7b80b..0e1b42b 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 82b6e4c..e6c3028 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 27ea272..22794d1 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 d4c9cd1..cfb318f 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 9a40fe6..085061e 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 2995cc8..c426d87 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 a3f1423..5d832d9 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 f90c344..ced69f7 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 0fc57a4..d599f1e 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 440ae9b..ef19d25 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 3eb1b86..1fe30d4 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 a022341..e8d2129 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 23112a6..cdfe0f7 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 8b1c089..3acbf95 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 74fa20b..e17fc4a 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 856d41a..06e6d67 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 99470e2..458814f 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 f5b15be..f35c7ea 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 9b47daf..113413e 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 053dc31..20ed7f9 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 18532ce..0a7cbef 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 73beb46..de41a7e 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 da4a296..aa8fcb7 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 bac124c..56d4b93 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 f576480..4315061 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 13739dc..d3bd796 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 7e40ee5..c42d305 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 5434b30..1356815 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 789e5af..56902a3 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 61fc098..cc30d63 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 ccf0a1d..dab8fa6 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 bb7f7a4..fac3702 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 6bbdb6a..8c7fc9b 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 89682df..9cade18 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 62f6722..d4a7b82 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 2cd0853..a452856 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 dbecefe..69f2146 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 024476f..02944a2 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 7a2a378..5ffdc11 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 e51beab..c2aa080 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 52f0be3..421c70a 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 ac6d976..4aca2c5 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 ad140d1..5c8e74d 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 45c782e..a89545a 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 39ae353..06238bf 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 918f3b7..29b308b 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 2a5922c..af8fc0c 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 5a02aaf..42df37e 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 8106965..c0fca33 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 6bb8dd8..9d7b60f 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 af36ced..7f4cda6 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 e64f4f3..1238f4b 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 17ac686..f338d71 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 3968703..ec0efb1 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 da2ecba..f79c8f5 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 4d345ea..d9831ab 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 c062388..ab0583a 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 7602e61..90b0ea6 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 e717e61..9f8b8db 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 5c168dc..00746a1 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 1a44caf..82fb9e0 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 930ddb6..dfe0b0e 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 a13c4ee..aa42b78 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 09a956f..c2d5c5a 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 2dea3b7..703ddeb 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 de8b878..deea8ae 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 6434217..194d4a2 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 8e45ce6..fd3cec5 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 e88d26e..21a5788 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 b9dd299..c980ed0 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 73d6ab6..993078d 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 33c28ab..d0ac1de 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 71628b3..00bdfbd 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 2790b4b..9e4c70c 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 99b5479..1b54aee 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 f28687d..09045ad 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 d2c932f..e4c36b5 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 c6b5064..dfb7a46 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 39e1e03..c558063 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 5cb84a8..683da34 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 bc79e9e..2062d05 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 711626e..089c7a7 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 0fe2467..02b8db4 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 f11b6fb..d82c347 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 2741e05..44f5e66 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 0802631..cc96f56 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 04a8b94..699f55d 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 b541a87..0f34eab 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 1ec7055..6f07fbe 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 4c7d919..b541288 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 7c59a6b..d169474 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 e28d252..1003bd4 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 e699000..65bef68 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 a4669a6..17b63cc 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 14a753f..ac569af 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 68c0c0f..ef6cb16 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 2a2fb59..a891735 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 aacb4ca..051f34d 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 8c0b24f..3bb68cd 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 a7bc20b..78e43e0 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 04b28f4..605359e 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 4a6f0f4..db0860b 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 87fa79e..8ef33df 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 3beae6c..eb822e4 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 0a92b21..ec77f3a 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 ceae7fa..976a667 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 a2d58a3..8966626 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 3bd2668..89cbda2 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 826e82c..c257915 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 16a6df9..521e10c 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 21d2f1d..0226acd 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -111,11 +111,10 @@
""" + 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