root/lib/libc/arch/powerpc64/sys/ptrace.S
/*      $NetBSD: ptrace.S,v 1.3 2014/08/23 02:24:22 matt Exp $  */

#include "SYS.h"

ENTRY(ptrace)
#ifdef _REENTRANT
        mflr    %r0
        streg   %r0,SZREG(%r1)
        stregu  %r1,-(SZREG*6)(%r1)
        streg   %r3,(SZREG*2)(%r1)
        streg   %r4,(SZREG*3)(%r1)
        streg   %r5,(SZREG*4)(%r1)
        streg   %r6,(SZREG*5)(%r1)

        bl      PIC_PLT(_C_LABEL(__errno))
        nop
        li      %r7,0
        stint   %r7,0(%r3)

        ldreg   %r3,(SZREG*2)(%r1)
        ldreg   %r4,(SZREG*3)(%r1)
        ldreg   %r5,(SZREG*4)(%r1)
        ldreg   %r6,(SZREG*5)(%r1)
        addi    %r1,%r1,SZREG*6
        ldreg   %r0,SZREG(%r1)
        mtlr    %r0
#else
        .pushsection ".toc","aw"
.Lerrno:
        .tc     errno[TC], errno
        .popsection
        addis   %r7,%r2,_C_LABEL(errno)@toc@ha
        ldptr   %r7,_C_LABEL(errno)@toc@l(%r7)
        li      %r8,0
        stint   %r8,0(%r7)
        mtlr    0
#endif /* _REENTRANT */
        _DOSYSCALL(ptrace)
        bso     1f
        blr
1:
        BRANCH_TO_CERROR()
END(ptrace)