From 8d232a6025d16a41d3db742dfccc64941f3a149e Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Mon, 3 Jul 2006 19:10:42 +0000 Subject: 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. --- libc/sysdeps/linux/mips/pipe.S | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) (limited to 'libc') 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 -- cgit v1.2.3