tools/llvm: Do not build with symbols
[minix3.git] / lib / libc / arch / powerpc / sys / ptrace.S
blob2fc542d9cb342f191907cd9674299ca328f01b88
1 /*      $NetBSD: ptrace.S,v 1.7 2013/09/12 15:36:15 joerg Exp $ */
3 #include "SYS.h"
4 #include "assym.h"
6 #if defined(LIBC_SCCS) && !defined(lint)
7 __RCSID("$NetBSD: ptrace.S,v 1.7 2013/09/12 15:36:15 joerg Exp $")
8 #endif /* LIBC_SCCS && !lint */
10 #define XCALLFRAMELEN           ((((2+5)*SZREG) + CALLFRAMELEN - 1) & -CALLFRAMELEN)
11 #define XCALLFRAME_DATA         (XCALLFRAMELEN - 1*SZREG)
12 #define XCALLFRAME_ADDR         (XCALLFRAMELEN - 2*SZREG)
13 #define XCALLFRAME_PID          (XCALLFRAMELEN - 3*SZREG)
14 #define XCALLFRAME_REQUEST      (XCALLFRAMELEN - 4*SZREG)
15 #define XCALLFRAME_R30          (XCALLFRAMELEN - 5*SZREG)
17 ENTRY(ptrace)
18 #ifdef _REENTRANT
19         mflr    %r0
20         stw     %r0,CALLFRAME_LR(%r1)
21         stwu    %r1,-XCALLFRAMELEN(%r1)
22         stw     %r3,XCALLFRAME_REQUEST(%r1)
23         stw     %r4,XCALLFRAME_PID(%r1)
24         stw     %r5,XCALLFRAME_ADDR(%r1)
25         stw     %r6,XCALLFRAME_DATA(%r1)
26 #ifdef __PIC__
27         stw     %r30,XCALLFRAME_R30(%r1)
28         PIC_TOCSETUP(ptrace, %r30)
29 #endif
31         bl      PIC_PLT(_C_LABEL(__errno))
32         li      %r7,0
33         stw     %r7,0(%r3)
35 #ifdef __PIC__
36         lwz     %r30,XCALLFRAME_R30(%r1)
37 #endif
38         lwz     %r6,XCALLFRAME_DATA(%r1)
39         lwz     %r4,XCALLFRAME_PID(%r1)
40         lwz     %r5,XCALLFRAME_ADDR(%r1)
41         lwz     %r3,XCALLFRAME_REQUEST(%r1)
42         addi    %r1,%r1,XCALLFRAMELEN
43         lwz     %r0,CALLFRAME_LR(%r1)
44         mtlr    %r0
45 #else
46 #ifdef __PIC__
47         mflr    %r0
48         PIC_GOTSETUP(%r7)
49         lwz     %r7,_C_LABEL(errno)@got(%r7)
50         li      %r8,0
51         stw     %r8,0(%r7)
52         mtlr    0
53 #else
54         lis     %r7,_C_LABEL(errno)@ha
55         li      %r8,0
56         stw     %r8,_C_LABEL(errno)@l(%r7)
57 #endif /* __PIC__ */
58 #endif /* _REENTRANT */
59         _DOSYSCALL(ptrace)
60         bnslr
61         b       _C_LABEL(__cerror)