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