ptrace.S revision 1.3 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