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