summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2006-07-03 19:10:42 +0000
committerEric Andersen <andersen@codepoet.org>2006-07-03 19:10:42 +0000
commit8d232a6025d16a41d3db742dfccc64941f3a149e (patch)
tree4850d0dcfc718c1242ef2e763b8f28015af1ffb7 /libc/sysdeps/linux
parent69ccfcf7630b26bbba1b7770706e7a211e098947 (diff)
Atsushi Nemoto writes:
current pipe.S seems broken for error case. For example, "la t0, __syscall_error" should be "la t9, __syscall_error"? Jumping to __syscall_error without reverting sp is correct? I updated this patch against recent snapshot and tested: it looks OK. * Get rid of saving/restoring a0. No need to adjust sp. * Fix code in error path.
Diffstat (limited to 'libc/sysdeps/linux')
-rw-r--r--libc/sysdeps/linux/mips/pipe.S16
1 files changed, 1 insertions, 15 deletions
diff --git a/libc/sysdeps/linux/mips/pipe.S b/libc/sysdeps/linux/mips/pipe.S
index 488d9cfb9..e75acb621 100644
--- a/libc/sysdeps/linux/mips/pipe.S
+++ b/libc/sysdeps/linux/mips/pipe.S
@@ -10,33 +10,19 @@
.globl pipe
.ent pipe, 0
pipe:
- .frame sp, 24, sp
-#ifdef __PIC__
- .set noreorder
- .cpload $25
- .set reorder
- addiu sp,sp,-24
- .cprestore 16
-#else
- addiu sp,sp,-24
-#endif
- sw a0,16(sp)
li v0,__NR_pipe
syscall
beqz a3, 1f
#ifdef __PIC__
- la t0, __syscall_error
+ la t9, __syscall_error
jr t9
#else
j __syscall_error
#endif
1:
- lw a0, 16(sp)
sw v0, 0(a0)
sw v1, 4(a0)
li v0, 0
-2:
- addiu sp,sp,24
j ra
.end pipe
.size pipe,.-pipe