Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/mips/include/uapi/asm/ptrace.h
26495 views
1
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2
/*
3
* This file is subject to the terms and conditions of the GNU General Public
4
* License. See the file "COPYING" in the main directory of this archive
5
* for more details.
6
*
7
* Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 by Ralf Baechle
8
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
9
*/
10
#ifndef _UAPI_ASM_PTRACE_H
11
#define _UAPI_ASM_PTRACE_H
12
13
#include <linux/types.h>
14
15
/* 0 - 31 are integer registers, 32 - 63 are fp registers. */
16
#define FPR_BASE 32
17
#define PC 64
18
#define CAUSE 65
19
#define BADVADDR 66
20
#define MMHI 67
21
#define MMLO 68
22
#define FPC_CSR 69
23
#define FPC_EIR 70
24
#define DSP_BASE 71 /* 3 more hi / lo register pairs */
25
#define DSP_CONTROL 77
26
#define ACX 78
27
28
/*
29
* This struct defines the registers as used by PTRACE_{GET,SET}REGS. The
30
* format is the same for both 32- and 64-bit processes. Registers for 32-bit
31
* processes are sign extended.
32
*/
33
#ifdef __KERNEL__
34
struct user_pt_regs {
35
#else
36
struct pt_regs {
37
#endif
38
/* Saved main processor registers. */
39
__u64 regs[32];
40
41
/* Saved special registers. */
42
__u64 lo;
43
__u64 hi;
44
__u64 cp0_epc;
45
__u64 cp0_badvaddr;
46
__u64 cp0_status;
47
__u64 cp0_cause;
48
} __attribute__ ((aligned (8)));
49
50
/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
51
#define PTRACE_GETREGS 12
52
#define PTRACE_SETREGS 13
53
#define PTRACE_GETFPREGS 14
54
#define PTRACE_SETFPREGS 15
55
/* #define PTRACE_GETFPXREGS 18 */
56
/* #define PTRACE_SETFPXREGS 19 */
57
58
#define PTRACE_OLDSETOPTIONS 21
59
60
#define PTRACE_GET_THREAD_AREA 25
61
#define PTRACE_SET_THREAD_AREA 26
62
63
/* Calls to trace a 64bit program from a 32bit program. */
64
#define PTRACE_PEEKTEXT_3264 0xc0
65
#define PTRACE_PEEKDATA_3264 0xc1
66
#define PTRACE_POKETEXT_3264 0xc2
67
#define PTRACE_POKEDATA_3264 0xc3
68
#define PTRACE_GET_THREAD_AREA_3264 0xc4
69
70
/* Read and write watchpoint registers. */
71
enum pt_watch_style {
72
pt_watch_style_mips32,
73
pt_watch_style_mips64
74
};
75
struct mips32_watch_regs {
76
unsigned int watchlo[8];
77
/* Lower 16 bits of watchhi. */
78
unsigned short watchhi[8];
79
/* Valid mask and I R W bits.
80
* bit 0 -- 1 if W bit is usable.
81
* bit 1 -- 1 if R bit is usable.
82
* bit 2 -- 1 if I bit is usable.
83
* bits 3 - 11 -- Valid watchhi mask bits.
84
*/
85
unsigned short watch_masks[8];
86
/* The number of valid watch register pairs. */
87
unsigned int num_valid;
88
} __attribute__((aligned(8)));
89
90
struct mips64_watch_regs {
91
unsigned long long watchlo[8];
92
unsigned short watchhi[8];
93
unsigned short watch_masks[8];
94
unsigned int num_valid;
95
} __attribute__((aligned(8)));
96
97
struct pt_watch_regs {
98
enum pt_watch_style style;
99
union {
100
struct mips32_watch_regs mips32;
101
struct mips64_watch_regs mips64;
102
};
103
};
104
105
#define PTRACE_GET_WATCH_REGS 0xd0
106
#define PTRACE_SET_WATCH_REGS 0xd1
107
108
109
#endif /* _UAPI_ASM_PTRACE_H */
110
111