From d628f35869a75773035dc21b6bbdb0390c069cf4 Mon Sep 17 00:00:00 2001 From: "\"Steven J. Hill\"" Date: Tue, 14 Feb 2006 02:13:07 +0000 Subject: Apply patch from Joseph Myers for MIPS pipe and get rid of the C version. Patch tested. --- libc/sysdeps/linux/mips/pipe.S | 60 ++++++++++++++++++++++++------------------ libc/sysdeps/linux/mips/pipe.c | 30 --------------------- 2 files changed, 34 insertions(+), 56 deletions(-) delete mode 100644 libc/sysdeps/linux/mips/pipe.c (limited to 'libc/sysdeps') diff --git a/libc/sysdeps/linux/mips/pipe.S b/libc/sysdeps/linux/mips/pipe.S index e58b530dc..f80002118 100644 --- a/libc/sysdeps/linux/mips/pipe.S +++ b/libc/sysdeps/linux/mips/pipe.S @@ -1,9 +1,4 @@ /* pipe system call for Linux/MIPS */ -/* - * Copyright (C) 2000-2006 Erik Andersen - * - * 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 .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 diff --git a/libc/sysdeps/linux/mips/pipe.c b/libc/sysdeps/linux/mips/pipe.c deleted file mode 100644 index bfca4b60d..000000000 --- a/libc/sysdeps/linux/mips/pipe.c +++ /dev/null @@ -1,30 +0,0 @@ -/* pipe system call for Linux/MIPS */ -/* - * Copyright (C) 2000-2006 Erik Andersen - * - * 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 -#include -#include - -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) -- cgit v1.2.3