summaryrefslogtreecommitdiff
path: root/src/internal/mips
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-09-09 14:53:06 -0400
committerRich Felker <dalias@aerifal.cx>2012-09-09 14:53:06 -0400
commit9a3bbce447403d735282586786dc436ec1ffbad4 (patch)
tree5dc2b8d273b394fd8554d15f79aab34dd2d2dd11 /src/internal/mips
parent5e3c243d8df6b1504db9c1e6442d47ed38937e02 (diff)
downloadmusl-9a3bbce447403d735282586786dc436ec1ffbad4.tar.gz
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.s7
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