diff options
Diffstat (limited to 'mdk-stage1/dietlibc/sparc/pipe.S')
-rw-r--r-- | mdk-stage1/dietlibc/sparc/pipe.S | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/mdk-stage1/dietlibc/sparc/pipe.S b/mdk-stage1/dietlibc/sparc/pipe.S index b8ad1d251..820da2570 100644 --- a/mdk-stage1/dietlibc/sparc/pipe.S +++ b/mdk-stage1/dietlibc/sparc/pipe.S @@ -3,18 +3,24 @@ .text .global pipe pipe: + mov %o0, %o2 mov __NR_pipe, %g1 ta 0x10 - bcc,a .Lnoerror + bcc,a 1f nop save %sp, -96, %sp +#ifdef WANT_THREAD_SAVE call __errno_location nop +#else + sethi %hi(errno), %o0 + or %o0, %lo(errno), %o0 +#endif st %i0, [ %o0 ] ret restore %g0, -1, %o0 -.Lnoerror: - st %o0, [ %o2 ] + +1: st %o0, [ %o2 ] st %o1, [ %o2 + 4 ] retl mov %g0, %o0 |