summaryrefslogtreecommitdiffstats
path: root/include/asm-x86/ptrace-abi.h
blob: b473ad45e9ca072f25bcd40f0753301ce8a923f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#ifndef _ASM_X86_PTRACE_ABI_H
#define _ASM_X86_PTRACE_ABI_H

#ifdef __i386__

#define EBX 0
#define ECX 1
#define EDX 2
#define ESI 3
#define EDI 4
#define EBP 5
#define EAX 6
#define DS 7
#define ES 8
#define FS 9
#define GS 10
#define ORIG_EAX 11
#define EIP 12
#define CS  13
#define EFL 14
#define UESP 15
#define SS   16
#define FRAME_SIZE 17

#else /* __i386__ */

#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
#define R15 0
#define R14 8
#define R13 16
#define R12 24
#define RBP 32
#define RBX 40
/* arguments: interrupts/non tracing syscalls only save upto here*/
#define R11 48
#define R10 56
#define R9 64
#define R8 72
#define RAX 80
#define RCX 88
#define RDX 96
#define RSI 104
#define RDI 112
#define ORIG_RAX 120       /* = ERROR */
/* end of arguments */
/* cpu exception frame or undefined in case of fast syscall. */
#define RIP 128
#define CS 136
#define EFLAGS 144
#define RSP 152
#define SS 160
#define ARGOFFSET R11
#endif /* __ASSEMBLY__ */

/* top of stack page */
#define FRAME_SIZE 168

#endif /* !__i386__ */

/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
#define PTRACE_GETREGS            12
#define PTRACE_SETREGS            13
#define PTRACE_GETFPREGS          14
#define PTRACE_SETFPREGS          15
#define PTRACE_GETFPXREGS         18
#define PTRACE_SETFPXREGS         19

#define PTRACE_OLDSETOPTIONS      21

/* only useful for access 32bit programs / kernels */
#define PTRACE_GET_THREAD_AREA    25
#define PTRACE_SET_THREAD_AREA    26

#ifdef __x86_64__
# define PTRACE_ARCH_PRCTL	  30
#else
# define PTRACE_SYSEMU		  31
# define PTRACE_SYSEMU_SINGLESTEP 32
#endif

#define PTRACE_SINGLEBLOCK	33	/* resume execution until next branch */

/* Return maximal BTS buffer size in number of records,
   if successuf; -1, otherwise.
   EOPNOTSUPP...processor does not support bts tracing */
#define PTRACE_BTS_MAX_BUFFER_SIZE 40

/* Allocate new bts buffer (free old one, if exists) of size DATA bts records;
   parameter ADDR is ignored.
   Return 0, if successful; -1, otherwise.
   EOPNOTSUPP...processor does not support bts tracing
   EINVAL.......invalid size in records
   ENOMEM.......out of memory */
#define PTRACE_BTS_ALLOCATE_BUFFER 41

/* Return the size of the bts buffer in number of bts records,
   if successful; -1, otherwise.
   EOPNOTSUPP...processor does not support bts tracing
   ENXIO........no buffer allocated */
#define PTRACE_BTS_GET_BUFFER_SIZE 42

/* Read the DATA'th bts record into a ptrace_bts_record buffer
   provided in ADDR.
   Records are ordered from newest to oldest.
   Return 0, if successful; -1, otherwise
   EOPNOTSUPP...processor does not support bts tracing
   ENXIO........no buffer allocated
   EINVAL.......invalid index */
#define PTRACE_BTS_READ_RECORD 43

/* Configure last branch trace; the configuration is given as a bit-mask of
   PTRACE_BTS_O_* options in DATA; parameter ADDR is ignored.
   Return 0, if successful; -1, otherwise
   EOPNOTSUPP...processor does not support bts tracing
   ENXIO........no buffer allocated */
#define PTRACE_BTS_CONFIG 44

/* Return the configuration as bit-mask of PTRACE_BTS_O_* options
   if successful; -1, otherwise.
   EOPNOTSUPP...processor does not support bts tracing
   ENXIO........no buffer allocated */
#define PTRACE_BTS_STATUS 45

/* Trace configuration options */
/* Collect last branch trace */
#define PTRACE_BTS_O_TRACE_TASK 0x1
/* Take timestamps when the task arrives and departs */
#define PTRACE_BTS_O_TIMESTAMPS 0x2

#endif