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