diff options
author | Matthieu Castet <matthieu.castet@gmail.com> | 2013-01-16 14:02:50 +0100 |
---|---|---|
committer | Matthieu Castet <matthieu.castet@gmail.com> | 2013-01-16 14:53:37 +0100 |
commit | faa0fdb1194172f578f973097d61e580bce528dc (patch) | |
tree | d4202960694635613c2bcebb69c198e0345d603a /libc/arch-arm/syscalls/sigaction.S | |
parent | 791e26d9598a72376b8a16a5ccfb5d1ae0010965 (diff) | |
download | bionic-faa0fdb1194172f578f973097d61e580bce528dc.zip bionic-faa0fdb1194172f578f973097d61e580bce528dc.tar.gz bionic-faa0fdb1194172f578f973097d61e580bce528dc.tar.bz2 |
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.
Diffstat (limited to 'libc/arch-arm/syscalls/sigaction.S')
-rw-r--r-- | libc/arch-arm/syscalls/sigaction.S | 5 |
1 files changed, 2 insertions, 3 deletions
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 |