svn commit: trunk/uClibc/libc/sysdeps/linux/mips

andersen at uclibc.org andersen at uclibc.org
Mon Jul 3 19:10:47 UTC 2006


Author: andersen
Date: 2006-07-03 12:10:42 -0700 (Mon, 03 Jul 2006)
New Revision: 15591

Log:
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.



Modified:
   trunk/uClibc/libc/sysdeps/linux/mips/pipe.S


Changeset:
Modified: trunk/uClibc/libc/sysdeps/linux/mips/pipe.S
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/mips/pipe.S	2006-07-03 18:58:14 UTC (rev 15590)
+++ trunk/uClibc/libc/sysdeps/linux/mips/pipe.S	2006-07-03 19:10:42 UTC (rev 15591)
@@ -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-cvs mailing list