diff options
Diffstat (limited to 'libc/sysdeps/linux/mips/pipe.S')
-rw-r--r-- | libc/sysdeps/linux/mips/pipe.S | 60 |
1 files changed, 34 insertions, 26 deletions
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 <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 */ @@ -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 |