1 /* $NetBSD: ptrace.S,v 1.7 2013/09/12 15:36:15 joerg Exp $ */
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)
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)
27 stw %r30,XCALLFRAME_R30(%r1)
28 PIC_TOCSETUP(ptrace, %r30)
31 bl PIC_PLT(_C_LABEL(__errno))
36 lwz %r30,XCALLFRAME_R30(%r1)
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)
49 lwz %r7,_C_LABEL(errno)@got(%r7)
54 lis %r7,_C_LABEL(errno)@ha
56 stw %r8,_C_LABEL(errno)@l(%r7)
58 #endif /* _REENTRANT */