xref: /openbmc/u-boot/arch/x86/include/asm/ptrace.h (revision c6af2e7d)
1 #ifndef _I386_PTRACE_H
2 #define _I386_PTRACE_H
3 
4 #include <asm/types.h>
5 
6 #define EBX 0
7 #define ECX 1
8 #define EDX 2
9 #define ESI 3
10 #define EDI 4
11 #define EBP 5
12 #define EAX 6
13 #define DS 7
14 #define ES 8
15 #define FS 9
16 #define GS 10
17 #define ORIG_EAX 11
18 #define EIP 12
19 #define CS  13
20 #define EFL 14
21 #define UESP 15
22 #define SS   16
23 #define FRAME_SIZE 17
24 
25 /* this struct defines the way the registers are stored on the
26    stack during a system call. */
27 
28 struct pt_regs {
29 	long ebx;
30 	long ecx;
31 	long edx;
32 	long esi;
33 	long edi;
34 	long ebp;
35 	long eax;
36 	int  xds;
37 	int  xes;
38 	int  xfs;
39 	int  xgs;
40 	long orig_eax;
41 	long eip;
42 	int  xcs;
43 	long eflags;
44 	long esp;
45 	int  xss;
46 }  __attribute__ ((packed));
47 
48 struct irq_regs {
49 	/* Pushed by irq_common_entry */
50 	long ebx;
51 	long ecx;
52 	long edx;
53 	long esi;
54 	long edi;
55 	long ebp;
56 	long esp;
57 	long eax;
58 	long xds;
59 	long xes;
60 	long xfs;
61 	long xgs;
62 	long xss;
63 	/* Pushed by vector handler (irq_<num>) */
64 	long irq_id;
65 	/* Pushed by cpu in response to interrupt */
66 	long eip;
67 	long xcs;
68 	long eflags;
69 }  __attribute__ ((packed));
70 
71 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
72 #define PTRACE_GETREGS            12
73 #define PTRACE_SETREGS            13
74 #define PTRACE_GETFPREGS          14
75 #define PTRACE_SETFPREGS          15
76 #define PTRACE_GETFPXREGS         18
77 #define PTRACE_SETFPXREGS         19
78 
79 #define PTRACE_SETOPTIONS         21
80 
81 /* options set using PTRACE_SETOPTIONS */
82 #define PTRACE_O_TRACESYSGOOD     0x00000001
83 
84 #ifdef __KERNEL__
85 #define user_mode(regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs))
86 #define instruction_pointer(regs) ((regs)->eip)
87 extern void show_regs(struct pt_regs *);
88 #endif
89 
90 #endif
91