diff options
Diffstat (limited to 'libc/sysdeps/linux/mips/pipe.S')
-rw-r--r-- | libc/sysdeps/linux/mips/pipe.S | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/libc/sysdeps/linux/mips/pipe.S b/libc/sysdeps/linux/mips/pipe.S index e75acb621..8b3023679 100644 --- a/libc/sysdeps/linux/mips/pipe.S +++ b/libc/sysdeps/linux/mips/pipe.S @@ -1,29 +1,45 @@ /* pipe system call for Linux/MIPS */ +/* + * Copyright (C) 2000-2006 Erik Andersen <andersen@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 <features.h> -#include <asm/asm.h> +#include <sys/asm.h> #include <asm/unistd.h> -#include <asm/regdef.h> +#include <sys/regdef.h> .globl pipe .ent pipe, 0 + .type pipe,@function pipe: +#ifdef __PIC__ + SETUP_GP +#endif li v0,__NR_pipe syscall - beqz a3, 1f + bnez a3, 1f + sw v0, 0(a0) + sw v1, 4(a0) + li v0, 0 + j ra +1: + /* uClibc change -- start */ + move a0,v0 /* Pass return val to C function. */ + /* uClibc change -- stop */ + #ifdef __PIC__ - la t9, __syscall_error + SETUP_GP64(v0, pipe) + PTR_LA t9, __syscall_error + RESTORE_GP64 jr t9 #else j __syscall_error #endif 1: - sw v0, 0(a0) - sw v1, 4(a0) - li v0, 0 - j ra .end pipe .size pipe,.-pipe libc_hidden_def(pipe) |