master
1/* $NetBSD: ptrace.h,v 1.19 2021/03/18 23:18:36 simonb Exp $ */
2
3/*
4 * Copyright (c) 1992, 1993
5 * The Regents of the University of California. All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the University nor the names of its contributors
16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * @(#)ptrace.h 8.1 (Berkeley) 6/10/93
32 */
33
34/*
35 * Mips-dependent ptrace definitions.
36 *
37 */
38
39#ifndef _MIPS_PTRACE_H_
40#define _MIPS_PTRACE_H_
41
42/* MIPS PT_STEP PT_FIRSTMACH+0 might be defined by a port specific header */
43#define PT_GETREGS (PT_FIRSTMACH + 1)
44#define PT_SETREGS (PT_FIRSTMACH + 2)
45
46#define PT_GETFPREGS (PT_FIRSTMACH + 3)
47#define PT_SETFPREGS (PT_FIRSTMACH + 4)
48
49#ifdef PT_STEP
50#define PT_SETSTEP (PT_FIRSTMACH + 5)
51#define PT_CLEARSTEP (PT_FIRSTMACH + 6)
52#endif
53
54#define PT_MACHDEP_STRINGS \
55 "PT_STEP", \
56 "PT_GETREGS", \
57 "PT_SETREGS", \
58 "PT_GETFPREGS", \
59 "PT_SETFPREGS", \
60 "PT_SETSTEP", \
61 "PT_CLEARSTEP",
62
63#include <machine/reg.h>
64#define PTRACE_REG_PC(r) (r)->r_regs[35]
65#define PTRACE_REG_FP(r) (r)->r_regs[30]
66#define PTRACE_REG_SET_PC(r, v) (r)->r_regs[35] = (v)
67#define PTRACE_REG_SP(r) (r)->r_regs[29]
68#define PTRACE_REG_INTRV(r) (r)->r_regs[2]
69
70/*
71 * The sigrie is defined in the MIPS32r6 and MIPS64r6 specs to
72 * generate a Reserved Instruction trap but uses a previously
73 * reserved instruction encoding and is thus both backwards and
74 * forwards compatible.
75 */
76#define PTRACE_ILLEGAL_ASM do { \
77 asm volatile( \
78 ".set push; " \
79 ".set mips32r6; " \
80 "sigrie 0; " \
81 ".set pop; " \
82 ); \
83 } while (0);
84
85#define PTRACE_BREAKPOINT ((const uint8_t[]) { 0x00, 0x00, 0x00, 0x0d })
86#define PTRACE_BREAKPOINT_ASM __asm __volatile("break")
87#define PTRACE_BREAKPOINT_SIZE 4
88
89/*
90 * Glue for gdb: map NetBSD register names to legacy ptrace register names
91 */
92#define GPR_BASE 0
93
94#ifndef JB_PC
95#define JB_PC 2 /* pc is at ((long *)jmp_buf)[2] */
96#endif
97
98#include <machine/reg.h> /* Historically in sys/ptrace.h */
99#include <machine/regnum.h> /* real register names */
100
101#endif /* _MIPS_PTRACE_H_ */