Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _X86_64_PTRACE_H |
2 | #define _X86_64_PTRACE_H | |
3 | ||
70e0eb8e | 4 | #include <asm/ptrace-abi.h> |
1da177e4 | 5 | |
70e0eb8e | 6 | #ifndef __ASSEMBLY__ |
1da177e4 LT |
7 | |
8 | struct pt_regs { | |
9 | unsigned long r15; | |
10 | unsigned long r14; | |
11 | unsigned long r13; | |
12 | unsigned long r12; | |
13 | unsigned long rbp; | |
14 | unsigned long rbx; | |
15 | /* arguments: non interrupts/non tracing syscalls only save upto here*/ | |
16 | unsigned long r11; | |
70e0eb8e | 17 | unsigned long r10; |
1da177e4 LT |
18 | unsigned long r9; |
19 | unsigned long r8; | |
20 | unsigned long rax; | |
21 | unsigned long rcx; | |
22 | unsigned long rdx; | |
23 | unsigned long rsi; | |
24 | unsigned long rdi; | |
25 | unsigned long orig_rax; | |
70e0eb8e | 26 | /* end of arguments */ |
1da177e4 LT |
27 | /* cpu exception frame or undefined */ |
28 | unsigned long rip; | |
29 | unsigned long cs; | |
70e0eb8e JD |
30 | unsigned long eflags; |
31 | unsigned long rsp; | |
1da177e4 | 32 | unsigned long ss; |
70e0eb8e | 33 | /* top of stack page */ |
1da177e4 LT |
34 | }; |
35 | ||
36 | #endif | |
37 | ||
1da177e4 LT |
38 | #if defined(__KERNEL__) && !defined(__ASSEMBLY__) |
39 | #define user_mode(regs) (!!((regs)->cs & 3)) | |
fa1e1bdf | 40 | #define user_mode_vm(regs) user_mode(regs) |
1da177e4 | 41 | #define instruction_pointer(regs) ((regs)->rip) |
b3f827cb AM |
42 | #define regs_return_value(regs) ((regs)->rax) |
43 | ||
1da177e4 LT |
44 | extern unsigned long profile_pc(struct pt_regs *regs); |
45 | void signal_fault(struct pt_regs *regs, void __user *frame, char *where); | |
46 | ||
f1290ec9 AK |
47 | struct task_struct; |
48 | ||
49 | extern unsigned long | |
50 | convert_rip_to_linear(struct task_struct *child, struct pt_regs *regs); | |
51 | ||
1da177e4 LT |
52 | enum { |
53 | EF_CF = 0x00000001, | |
54 | EF_PF = 0x00000004, | |
55 | EF_AF = 0x00000010, | |
56 | EF_ZF = 0x00000040, | |
57 | EF_SF = 0x00000080, | |
58 | EF_TF = 0x00000100, | |
59 | EF_IE = 0x00000200, | |
60 | EF_DF = 0x00000400, | |
61 | EF_OF = 0x00000800, | |
62 | EF_IOPL = 0x00003000, | |
63 | EF_IOPL_RING0 = 0x00000000, | |
64 | EF_IOPL_RING1 = 0x00001000, | |
65 | EF_IOPL_RING2 = 0x00002000, | |
66 | EF_NT = 0x00004000, /* nested task */ | |
67 | EF_RF = 0x00010000, /* resume */ | |
68 | EF_VM = 0x00020000, /* virtual mode */ | |
69 | EF_AC = 0x00040000, /* alignment */ | |
70 | EF_VIF = 0x00080000, /* virtual interrupt */ | |
71 | EF_VIP = 0x00100000, /* virtual interrupt pending */ | |
72 | EF_ID = 0x00200000, /* id */ | |
73 | }; | |
74 | ||
75 | #endif | |
76 | ||
77 | #endif |