blob: 750e40d030cca8938cfc92ebf2b6ea50ba83ec05 [file] [log] [blame]
wdenk591dda52002-11-18 00:14:45 +00001#ifndef _I386_PTRACE_H
2#define _I386_PTRACE_H
3
4#define EBX 0
5#define ECX 1
6#define EDX 2
7#define ESI 3
8#define EDI 4
9#define EBP 5
10#define EAX 6
11#define DS 7
12#define ES 8
13#define FS 9
14#define GS 10
15#define ORIG_EAX 11
16#define EIP 12
17#define CS 13
18#define EFL 14
19#define UESP 15
20#define SS 16
21#define FRAME_SIZE 17
22
wdenk57b2d802003-06-27 21:31:46 +000023/* this struct defines the way the registers are stored on the
wdenk591dda52002-11-18 00:14:45 +000024 stack during a system call. */
25
26struct pt_regs {
27 long ebx;
28 long ecx;
29 long edx;
30 long esi;
31 long edi;
32 long ebp;
33 long eax;
34 int xds;
35 int xes;
36 int xfs;
37 int xgs;
38 long orig_eax;
39 long eip;
40 int xcs;
41 long eflags;
42 long esp;
43 int xss;
44} __attribute__ ((packed));
45
46
47/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
48#define PTRACE_GETREGS 12
49#define PTRACE_SETREGS 13
50#define PTRACE_GETFPREGS 14
51#define PTRACE_SETFPREGS 15
52#define PTRACE_GETFPXREGS 18
53#define PTRACE_SETFPXREGS 19
54
55#define PTRACE_SETOPTIONS 21
56
57/* options set using PTRACE_SETOPTIONS */
58#define PTRACE_O_TRACESYSGOOD 0x00000001
59
60#ifdef __KERNEL__
61#define user_mode(regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs))
62#define instruction_pointer(regs) ((regs)->eip)
63extern void show_regs(struct pt_regs *);
64#endif
65
66#endif