| # |
| # arch/alpha/pipe.S |
| # |
| |
| # |
| # pipe() on alpha returns both file descriptors in registers -- |
| # $0 (v0) and $20 (a4) respectively. This is unlike any other system call, |
| # as far as I can tell. |
| # |
| |
| #include <asm/unistd.h> |
| #include <machine/asm.h> |
| |
| .text |
| .align 3 |
| .type pipe, @function |
| .ent pipe, 0 |
| .globl pipe |
| pipe: |
| .frame sp,0,ra,0 |
| lda v0, __NR_pipe |
| callsys |
| beq a3, 1f |
| br pv, 2f # pv <- pc |
| 2: |
| ldgp gp, 0(pv) |
| lda a1, errno |
| lda v0, -1(zero) |
| stl a3, 0(a1) |
| ret zero,(ra),1 |
| 1: |
| stl v0, 0(a0) |
| mov v0, zero |
| stl a3, 4(a0) |
| ret zero,(ra),1 |
| |
| .size __syscall_dual1,.-__syscall_dual1 |
| .end __syscall_dual1 |