ptrace.S revision 1.1 1 /* $NetBSD: ptrace.S,v 1.1 2006/07/01 16:37:20 ross Exp $ */
2
3 #include "SYS.h"
4
5 ENTRY(ptrace)
6 #ifdef _REENTRANT
7 mflr %r0
8 stwu %r1,-32(%r1)
9 stw %r0,36(%r1)
10 stw %r3,8(%r1)
11 stw %r4,12(%r1)
12 stw %r5,16(%r1)
13 stw %r6,20(%r1)
14
15 bl PIC_PLT(_C_LABEL(__errno))
16 li %r7,0
17 stw %r7,0(%r3)
18
19 lwz %r3,8(%r1)
20 lwz %r4,12(%r1)
21 lwz %r5,16(%r1)
22 lwz %r0,36(%r1)
23 lwz %r6,20(%r1)
24 mtlr %r0
25 la %r1,32(%r1)
26 #else
27 #ifdef PIC
28 mflr %r0
29 bl _GLOBAL_OFFSET_TABLE_@local-4
30 mflr %r7
31 lwz %r7,_C_LABEL(errno)@got(%r7)
32 li %r8,0
33 stw %r8,0(%r7)
34 mtlr 0
35 #else
36 lis %r7,_C_LABEL(errno)@ha
37 li %r8,0
38 stw %r8,_C_LABEL(errno)@l(%r7)
39 #endif /* PIC */
40 #endif /* _REENTRANT */
41 li %r0,SYS_ptrace
42 sc
43 bso 1f
44 blr
45 1:
46 b PIC_PLT(_C_LABEL(__cerror))
47