diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-09-09 00:55:31 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-09-09 00:55:31 -0400 |
commit | 21419914c530c505cb450733b724257be703d9db (patch) | |
tree | 0c31ccce2b6a9ee5fb2cce79bd316160c5382389 /src/internal | |
parent | 41c5ee50eee769f85253946e4c4b5706de37e9e9 (diff) | |
download | musl-21419914c530c505cb450733b724257be703d9db.tar.gz musl-21419914c530c505cb450733b724257be703d9db.tar.bz2 musl-21419914c530c505cb450733b724257be703d9db.tar.xz musl-21419914c530c505cb450733b724257be703d9db.zip |
fix broken mips syscall asm
this code was using $10 to save the syscall number, but $10 is not
necessarily preserved by the kernel across syscalls. only mattered for
syscalls that got interrupted by a signal and restarted. as far as i
can tell, $25 is preserved by the kernel across syscalls.
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/mips/syscall.s | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/internal/mips/syscall.s b/src/internal/mips/syscall.s index 01a5917b..28575408 100644 --- a/src/internal/mips/syscall.s +++ b/src/internal/mips/syscall.s @@ -3,7 +3,7 @@ .global __syscall .type __syscall,@function __syscall: - move $10, $4 + move $25, $4 move $4, $5 move $5, $6 move $6, $7 @@ -13,7 +13,7 @@ __syscall: subu $sp, $sp, 32 sw $8, 16($sp) sw $9, 20($sp) - move $2, $10 + move $2, $25 syscall beq $7, $0, 1f addu $sp, $sp, 32 |