1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
/* $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)
|