]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/x86/include/asm/ptrace.h
x86: Display correct CS/EIP/EFLAGS when there is an error code
[karo-tx-uboot.git] / arch / x86 / include / asm / ptrace.h
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         union {
67                 struct {
68                         long eip;
69                         long xcs;
70                         long eflags;
71                 } ctx1;
72                 struct {
73                         long err;
74                         long eip;
75                         long xcs;
76                         long eflags;
77                 } ctx2;
78         } context;
79 }  __attribute__ ((packed));
80
81 /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
82 #define PTRACE_GETREGS            12
83 #define PTRACE_SETREGS            13
84 #define PTRACE_GETFPREGS          14
85 #define PTRACE_SETFPREGS          15
86 #define PTRACE_GETFPXREGS         18
87 #define PTRACE_SETFPXREGS         19
88
89 #define PTRACE_SETOPTIONS         21
90
91 /* options set using PTRACE_SETOPTIONS */
92 #define PTRACE_O_TRACESYSGOOD     0x00000001
93
94 #ifdef __KERNEL__
95 #define user_mode(regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs))
96 #define instruction_pointer(regs) ((regs)->eip)
97 extern void show_regs(struct pt_regs *);
98 #endif
99
100 #endif