11.7Sjoerg/* $NetBSD: ptrace.S,v 1.7 2013/09/12 15:36:15 joerg Exp $ */ 21.1Sthorpej 31.1Sthorpej#include "SYS.h" 41.5Smatt#include "assym.h" 51.5Smatt 61.5Smatt#if defined(LIBC_SCCS) && !defined(lint) 71.7Sjoerg__RCSID("$NetBSD: ptrace.S,v 1.7 2013/09/12 15:36:15 joerg Exp $") 81.5Smatt#endif /* LIBC_SCCS && !lint */ 91.5Smatt 101.6Smatt#define XCALLFRAMELEN ((((2+5)*SZREG) + CALLFRAMELEN - 1) & -CALLFRAMELEN) 111.5Smatt#define XCALLFRAME_DATA (XCALLFRAMELEN - 1*SZREG) 121.5Smatt#define XCALLFRAME_ADDR (XCALLFRAMELEN - 2*SZREG) 131.5Smatt#define XCALLFRAME_PID (XCALLFRAMELEN - 3*SZREG) 141.5Smatt#define XCALLFRAME_REQUEST (XCALLFRAMELEN - 4*SZREG) 151.6Smatt#define XCALLFRAME_R30 (XCALLFRAMELEN - 5*SZREG) 161.1Sthorpej 171.3SkleinkENTRY(ptrace) 181.3Skleink#ifdef _REENTRANT 191.4Smatt mflr %r0 201.5Smatt stw %r0,CALLFRAME_LR(%r1) 211.5Smatt stwu %r1,-XCALLFRAMELEN(%r1) 221.5Smatt stw %r3,XCALLFRAME_REQUEST(%r1) 231.5Smatt stw %r4,XCALLFRAME_PID(%r1) 241.5Smatt stw %r5,XCALLFRAME_ADDR(%r1) 251.5Smatt stw %r6,XCALLFRAME_DATA(%r1) 261.7Sjoerg#ifdef __PIC__ 271.6Smatt stw %r30,XCALLFRAME_R30(%r1) 281.6Smatt PIC_TOCSETUP(ptrace, %r30) 291.6Smatt#endif 301.3Skleink 311.3Skleink bl PIC_PLT(_C_LABEL(__errno)) 321.4Smatt li %r7,0 331.4Smatt stw %r7,0(%r3) 341.3Skleink 351.7Sjoerg#ifdef __PIC__ 361.6Smatt lwz %r30,XCALLFRAME_R30(%r1) 371.6Smatt#endif 381.5Smatt lwz %r6,XCALLFRAME_DATA(%r1) 391.5Smatt lwz %r4,XCALLFRAME_PID(%r1) 401.5Smatt lwz %r5,XCALLFRAME_ADDR(%r1) 411.5Smatt lwz %r3,XCALLFRAME_REQUEST(%r1) 421.5Smatt addi %r1,%r1,XCALLFRAMELEN 431.5Smatt lwz %r0,CALLFRAME_LR(%r1) 441.4Smatt mtlr %r0 451.3Skleink#else 461.7Sjoerg#ifdef __PIC__ 471.4Smatt mflr %r0 481.6Smatt PIC_GOTSETUP(%r7) 491.4Smatt lwz %r7,_C_LABEL(errno)@got(%r7) 501.4Smatt li %r8,0 511.4Smatt stw %r8,0(%r7) 521.3Skleink mtlr 0 531.3Skleink#else 541.4Smatt lis %r7,_C_LABEL(errno)@ha 551.4Smatt li %r8,0 561.4Smatt stw %r8,_C_LABEL(errno)@l(%r7) 571.7Sjoerg#endif /* __PIC__ */ 581.3Skleink#endif /* _REENTRANT */ 591.5Smatt _DOSYSCALL(ptrace) 601.6Smatt bnslr 611.5Smatt b _C_LABEL(__cerror) 62