diff options
author | Rich Felker <dalias@aerifal.cx> | 2012-09-09 14:53:06 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2012-09-09 14:53:06 -0400 |
commit | 9a3bbce447403d735282586786dc436ec1ffbad4 (patch) | |
tree | 5dc2b8d273b394fd8554d15f79aab34dd2d2dd11 /src/internal/mips | |
parent | 5e3c243d8df6b1504db9c1e6442d47ed38937e02 (diff) | |
download | musl-9a3bbce447403d735282586786dc436ec1ffbad4.tar.gz musl-9a3bbce447403d735282586786dc436ec1ffbad4.tar.xz musl-9a3bbce447403d735282586786dc436ec1ffbad4.zip |
add 7-arg syscall support for mips
no syscalls actually use that many arguments; the issue is that some syscalls with 64-bit arguments have them ordered badly so that breaking them into aligned 32-bit half-arguments wastes slots with padding, and a 7th slot is needed for the last argument.
Diffstat (limited to 'src/internal/mips')
-rw-r--r-- | src/internal/mips/syscall.s | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/internal/mips/syscall.s b/src/internal/mips/syscall.s index 28575408..e18a382e 100644 --- a/src/internal/mips/syscall.s +++ b/src/internal/mips/syscall.s @@ -3,17 +3,20 @@ .global __syscall .type __syscall,@function __syscall: - move $25, $4 + move $2, $4 move $4, $5 move $5, $6 move $6, $7 lw $7, 16($sp) lw $8, 20($sp) lw $9, 24($sp) + lw $10,28($sp) subu $sp, $sp, 32 sw $8, 16($sp) sw $9, 20($sp) - move $2, $25 + sw $10,24($sp) + sw $2 ,28($sp) + lw $2, 28($sp) syscall beq $7, $0, 1f addu $sp, $sp, 32 |