mips pipe.S cleanup

Atsushi Nemoto anemo at mba.ocn.ne.jp
Mon Jul 3 07:42:17 PDT 2006


On Fri, 24 Feb 2006 01:31:02 +0900 (JST), Atsushi Nemoto <anemo at mba.ocn.ne.jp> wrote:
> Though I do not have enough time to test it for now, 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?
> 
> Here is a proposed fix including the changes in bug tracking system.
> This is not tested completely.  Could someone try this?

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.

diff -urNp uClibc.org/libc/sysdeps/linux/mips/pipe.S uClibc/libc/sysdeps/linux/mips/pipe.S
--- uClibc.org/libc/sysdeps/linux/mips/pipe.S	2006-06-11 16:11:26.000000000 +0900
+++ uClibc/libc/sysdeps/linux/mips/pipe.S	2006-07-03 23:17:31.527495344 +0900
@@ -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


More information about the uClibc mailing list