Home | History | Annotate | Line # | Download | only in include
ptrace.h revision 1.13.14.1
      1  1.13.14.1    martin /*	$NetBSD: ptrace.h,v 1.13.14.1 2020/04/08 14:07:49 martin Exp $	*/
      2        1.5      matt 
      3        1.5      matt #ifndef _POWERPC_PTRACE_H
      4        1.5      matt #define	_POWERPC_PTRACE_H
      5        1.2     perry 
      6        1.3    tsubai #define	PT_STEP		(PT_FIRSTMACH + 0)
      7        1.3    tsubai #define	PT_GETREGS	(PT_FIRSTMACH + 1)
      8        1.3    tsubai #define	PT_SETREGS	(PT_FIRSTMACH + 2)
      9        1.4    tsubai #define	PT_GETFPREGS	(PT_FIRSTMACH + 3)
     10        1.4    tsubai #define	PT_SETFPREGS	(PT_FIRSTMACH + 4)
     11        1.5      matt #define	PT_GETVECREGS	(PT_FIRSTMACH + 5)
     12        1.5      matt #define	PT_SETVECREGS	(PT_FIRSTMACH + 6)
     13       1.13     kamil #define	PT_SETSTEP	(PT_FIRSTMACH + 7)
     14       1.13     kamil #define	PT_CLEARSTEP	(PT_FIRSTMACH + 8)
     15        1.5      matt 
     16        1.8      matt #define	PT_MACHDEP_STRINGS				\
     17        1.8      matt 	"PT_STEP",					\
     18        1.8      matt 	"PT_GETREGS",		"PT_SETREGS",		\
     19        1.8      matt 	"PT_GETFPREGS",		"PT_SETFPREGS",		\
     20       1.13     kamil 	"PT_GETVECREGS",	"PT_SETVECREGS",	\
     21       1.13     kamil 	"PT_SETSTEP",		"PT_CLEARSTEP",
     22        1.8      matt 
     23       1.12  christos #include <machine/reg.h>
     24       1.12  christos #define PTRACE_REG_PC(r)	(r)->pc
     25       1.12  christos #define PTRACE_REG_SET_PC(r, v)	(r)->pc = (v)
     26       1.12  christos #define PTRACE_REG_SP(r)	(r)->fixreg[1]
     27       1.12  christos #define PTRACE_REG_INTRV(r)	(r)->fixreg[3]
     28       1.12  christos 
     29        1.5      matt #ifdef _KERNEL
     30        1.5      matt #ifdef _KERNEL_OPT
     31        1.5      matt #include "opt_altivec.h"
     32        1.5      matt #endif
     33        1.5      matt 
     34       1.11      matt #if defined(ALTIVEC) || defined(PPC_HAVE_SPE)
     35        1.5      matt 
     36        1.5      matt /* We have machine-dependent process tracing requests.  */
     37        1.5      matt #define __HAVE_PTRACE_MACHDEP
     38        1.5      matt 
     39        1.5      matt #define	PTRACE_MACHDEP_REQUEST_CASES \
     40        1.5      matt 	case PT_GETVECREGS: \
     41        1.5      matt 	case PT_SETVECREGS:
     42        1.5      matt 
     43       1.10  christos int ptrace_machdep_dorequest(struct lwp *, struct lwp *, int, void *, int);
     44        1.9  christos int process_machdep_dovecregs(struct lwp *, struct lwp *, struct uio *);
     45        1.5      matt int process_machdep_validvecregs(struct proc *);
     46        1.5      matt 
     47        1.5      matt /* We have machine-dependent procfs nodes.  */
     48        1.5      matt #define __HAVE_PROCFS_MACHDEP
     49        1.5      matt 
     50        1.5      matt #define	PROCFS_MACHDEP_NODE_TYPES \
     51        1.5      matt 	Pmachdep_vecregs,		/* AltiVec register set */
     52        1.5      matt 
     53        1.5      matt #define	PROCFS_MACHDEP_NODETYPE_CASES \
     54        1.5      matt 	case Pmachdep_vecregs:
     55        1.5      matt 
     56        1.5      matt #define	PROCFS_MACHDEP_PROTECT_CASES \
     57        1.5      matt 	case Pmachdep_vecregs:
     58        1.5      matt 
     59        1.5      matt #define	PROCFS_MACHDEP_NODETYPE_DEFNS \
     60        1.5      matt 	{ DT_REG, N("vecregs"), Pmachdep_vecregs, \
     61        1.5      matt 	  procfs_machdep_validvecregs },
     62        1.5      matt 
     63        1.5      matt /* Functions used by procfs.  */
     64        1.5      matt struct mount;
     65        1.5      matt struct pfsnode;
     66        1.9  christos int procfs_machdep_dovecregs(struct lwp *, struct lwp *,
     67        1.5      matt 	struct pfsnode *, struct uio *);
     68        1.9  christos int procfs_machdep_validvecregs(struct lwp *, struct mount *);
     69        1.5      matt 
     70       1.11      matt #endif /* ALTIVEC || PPC_HAVE_SPE */
     71        1.5      matt #endif /* _KERNEL */
     72        1.5      matt 
     73  1.13.14.1    martin #define PTRACE_ILLEGAL_ASM	__asm __volatile (".long 0" : : : "memory")
     74  1.13.14.1    martin 
     75  1.13.14.1    martin #define PTRACE_BREAKPOINT	((const uint8_t[]) { 0x7f, 0xe0, 0x00, 0x08 })
     76  1.13.14.1    martin #define PTRACE_BREAKPOINT_ASM	__asm __volatile("trap")
     77  1.13.14.1    martin #define PTRACE_BREAKPOINT_SIZE	4
     78  1.13.14.1    martin 
     79  1.13.14.1    martin #ifdef _KERNEL
     80  1.13.14.1    martin #define PTRACE_LWP_GETPRIVATE(l) (l)->l_md.md_utf->tf_fixreg[_REG_R2]
     81  1.13.14.1    martin #endif
     82  1.13.14.1    martin 
     83        1.5      matt #endif /* _POWERPC_PTRACE_H */
     84