1/*        $NetBSD: ptrace.S,v 1.3 2014/08/23 02:24:22 matt Exp $      */
2
3#include "SYS.h"
4
5ENTRY(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
411:
42          BRANCH_TO_CERROR()
43END(ptrace)
44