summaryrefslogtreecommitdiffstats
path: root/libc/arch-sh
diff options
context:
space:
mode:
authorDavid 'Digit' Turner <digit@google.com>2010-09-27 17:33:08 +0200
committerDavid 'Digit' Turner <digit@google.com>2010-09-27 17:33:08 +0200
commit275cd48511daabe4591caa49c3ad0df34a6889ff (patch)
tree7fa40917d92ff25cbfe6e4f4d4cbe01bd9af588e /libc/arch-sh
parentb9e49ad56e5776ace7c6eab2e997d5b7acb16792 (diff)
downloadbionic-275cd48511daabe4591caa49c3ad0df34a6889ff.zip
bionic-275cd48511daabe4591caa49c3ad0df34a6889ff.tar.gz
bionic-275cd48511daabe4591caa49c3ad0df34a6889ff.tar.bz2
libc: Add missing pipe2() declaration and implementation.
Change-Id: Iacb914bd6ac5adc60c5671e6fef680ede21f9b0c
Diffstat (limited to 'libc/arch-sh')
-rw-r--r--libc/arch-sh/syscalls.mk1
-rw-r--r--libc/arch-sh/syscalls/pipe2.S32
2 files changed, 33 insertions, 0 deletions
diff --git a/libc/arch-sh/syscalls.mk b/libc/arch-sh/syscalls.mk
index ddae8d3..b690bbf 100644
--- a/libc/arch-sh/syscalls.mk
+++ b/libc/arch-sh/syscalls.mk
@@ -69,6 +69,7 @@ syscall_src += arch-sh/syscalls/__fcntl.S
syscall_src += arch-sh/syscalls/flock.S
syscall_src += arch-sh/syscalls/fchmod.S
syscall_src += arch-sh/syscalls/dup.S
+syscall_src += arch-sh/syscalls/pipe2.S
syscall_src += arch-sh/syscalls/dup2.S
syscall_src += arch-sh/syscalls/select.S
syscall_src += arch-sh/syscalls/ftruncate.S
diff --git a/libc/arch-sh/syscalls/pipe2.S b/libc/arch-sh/syscalls/pipe2.S
new file mode 100644
index 0000000..f6d9964
--- /dev/null
+++ b/libc/arch-sh/syscalls/pipe2.S
@@ -0,0 +1,32 @@
+/* autogenerated by gensyscalls.py */
+#include <sys/linux-syscalls.h>
+
+ .text
+ .type pipe2, @function
+ .globl pipe2
+ .align 4
+
+pipe2:
+
+ /* invoke trap */
+ mov.l 0f, r3 /* trap num */
+ trapa #(2 + 0x10)
+
+ /* check return value */
+ cmp/pz r0
+ bt __NR_pipe2_end
+
+ /* keep error number */
+ sts.l pr, @-r15
+ mov.l 1f, r1
+ jsr @r1
+ mov r0, r4
+ lds.l @r15+, pr
+
+__NR_pipe2_end:
+ rts
+ nop
+
+ .align 2
+0: .long __NR_pipe2
+1: .long __set_syscall_errno