1 /* $NetBSD: ptrace.S,v 1.3 2014/08/23 02:24:22 matt Exp $ */ 2 3 #include "SYS.h" 4 5 ENTRY(ptrace) 6 #ifdef _REENTRANT 7 mflr %r0 8 streg %r0,SZREG(%r1) 9 stregu %r1,-(SZREG*6)(%r1) 10 streg %r3,(SZREG*2)(%r1) 11 streg %r4,(SZREG*3)(%r1) 12 streg %r5,(SZREG*4)(%r1) 13 streg %r6,(SZREG*5)(%r1) 14 15 bl PIC_PLT(_C_LABEL(__errno)) 16 nop 17 li %r7,0 18 stint %r7,0(%r3) 19 20 ldreg %r3,(SZREG*2)(%r1) 21 ldreg %r4,(SZREG*3)(%r1) 22 ldreg %r5,(SZREG*4)(%r1) 23 ldreg %r6,(SZREG*5)(%r1) 24 addi %r1,%r1,SZREG*6 25 ldreg %r0,SZREG(%r1) 26 mtlr %r0 27 #else 28 .pushsection ".toc","aw" 29 .Lerrno: 30 .tc errno[TC], errno 31 .popsection 32 addis %r7,%r2,_C_LABEL(errno)@toc@ha 33 ldptr %r7,_C_LABEL(errno)@toc@l(%r7) 34 li %r8,0 35 stint %r8,0(%r7) 36 mtlr 0 37 #endif /* _REENTRANT */ 38 _DOSYSCALL(ptrace) 39 bso 1f 40 blr 41 1: 42 BRANCH_TO_CERROR() 43 END(ptrace) 44