summaryrefslogtreecommitdiffstats
path: root/libc/sysdeps/linux/mips/pipe.S
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/mips/pipe.S')
-rw-r--r--libc/sysdeps/linux/mips/pipe.S32
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)