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

sjhill at uclibc.org sjhill at uclibc.org
Tue Feb 14 02:13:09 UTC 2006


Author: sjhill
Date: 2006-02-13 18:13:07 -0800 (Mon, 13 Feb 2006)
New Revision: 13966

Log:
Apply patch from Joseph Myers for MIPS pipe and get rid of the C version. Patch tested.


Removed:
   trunk/uClibc/libc/sysdeps/linux/mips/pipe.c

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-02-14 01:53:00 UTC (rev 13965)
+++ trunk/uClibc/libc/sysdeps/linux/mips/pipe.S	2006-02-14 02:13:07 UTC (rev 13966)
@@ -1,9 +1,4 @@
 /* pipe system call for Linux/MIPS */
-/*
- * Copyright (C) 2000-2006 Erik Andersen <andersen at uclibc.org>
- *
- * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- */
 
 /*see uClibc's sh/pipe.c and glibc-2.2.4's mips/pipe.S */
 
@@ -13,26 +8,39 @@
 #include <asm/regdef.h>
 
 	.globl	pipe
-        .ent    pipe, 0
-pipe:
-        addiu   sp,sp,-24
-        sw      a0,16(sp)
-        li      v0,__NR_pipe
-        syscall
-        beqz    a3, 1f
-        la      t3, errno
-        sw      v0, (t3)
-        li      v0, -1
-        b       2f
+	.globl	__pipe
+	.hidden	__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
+	jr	t9
+#else
+	j	__syscall_error
+#endif
 1:
-        lw      a0, 16(sp)
-        sw      v0, 0(a0)
-        sw      v1, 4(a0)
-        li      v0, 0
+	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
-
-libc_hidden_def(pipe)
+	addiu	sp,sp,24
+	j	ra
+	.end	__pipe
+	.size	__pipe,.-__pipe
+	.weak	pipe
+	pipe = __pipe

Deleted: trunk/uClibc/libc/sysdeps/linux/mips/pipe.c
===================================================================
--- trunk/uClibc/libc/sysdeps/linux/mips/pipe.c	2006-02-14 01:53:00 UTC (rev 13965)
+++ trunk/uClibc/libc/sysdeps/linux/mips/pipe.c	2006-02-14 02:13:07 UTC (rev 13966)
@@ -1,30 +0,0 @@
-/* pipe system call for Linux/MIPS */
-/*
- * Copyright (C) 2000-2006 Erik Andersen <andersen at uclibc.org>
- *
- * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
- */
-/*see uClibc's sh/pipe.c and glibc-2.2.4's mips/pipe.S */
-
-#include <errno.h>
-#include <unistd.h>
-#include <syscall.h>
-
-libc_hidden_proto(pipe)
-
-int pipe(int *fd)
-{
-    register long int res __asm__ ("$2"); // v0
-    register long int res2 __asm__ ("$3"); // v1
-
-    asm ("move\t$4,%2\n\t"		// $4 = a0
-	 "syscall"		/* Perform the system call.  */
-	 : "=r" (res)
-	 : "0" (__NR_pipe), "r" (fd)
-	 : "$4", "$7");
-
-	fd[0] = res;
-	fd[1] = res2;
-	return(0);
-}
-libc_hidden_def(pipe)




More information about the uClibc-cvs mailing list