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