diff options
author | Eric Andersen <andersen@codepoet.org> | 2006-07-03 19:10:42 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2006-07-03 19:10:42 +0000 |
commit | 8d232a6025d16a41d3db742dfccc64941f3a149e (patch) | |
tree | 4850d0dcfc718c1242ef2e763b8f28015af1ffb7 | |
parent | 69ccfcf7630b26bbba1b7770706e7a211e098947 (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.
-rw-r--r-- | libc/sysdeps/linux/mips/pipe.S | 16 |
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 |