summaryrefslogtreecommitdiffstats
path: root/usr/klibc/arch/ia64/pipe.S
diff options
context:
space:
mode:
Diffstat (limited to 'usr/klibc/arch/ia64/pipe.S')
-rw-r--r--usr/klibc/arch/ia64/pipe.S27
1 files changed, 27 insertions, 0 deletions
diff --git a/usr/klibc/arch/ia64/pipe.S b/usr/klibc/arch/ia64/pipe.S
new file mode 100644
index 0000000..ae31a3a
--- /dev/null
+++ b/usr/klibc/arch/ia64/pipe.S
@@ -0,0 +1,27 @@
+#include <asm/unistd.h>
+ .align 32
+ .proc pipe
+ .global pipe
+pipe:
+ alloc r16 = ar.pfs, 1, 0, 8, 0
+ mov r33 = r32
+ mov r15=__NR_pipe
+ ;;
+ break 0x100000 // Do the syscall
+ ;;
+
+ cmp.ne p6, p7 = -1, r10
+ mov r15 = r0
+ ;;
+(p6) st4 [r32] = r8, 4
+
+(p7) movl r14 = errno
+(p7) addl r15 = -1, r0
+ ;;
+(p6) st4 [r32] = r9
+
+(p7) st4 [r14] = r8
+
+ mov r8 = r15
+ br.ret.sptk.many b0
+ .endp pipe