diff options
Diffstat (limited to 'include/asm-x86/ptrace_64.h')
-rw-r--r-- | include/asm-x86/ptrace_64.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/include/asm-x86/ptrace_64.h b/include/asm-x86/ptrace_64.h new file mode 100644 index 000000000000..7f166ccb0606 --- /dev/null +++ b/include/asm-x86/ptrace_64.h | |||
@@ -0,0 +1,78 @@ | |||
1 | #ifndef _X86_64_PTRACE_H | ||
2 | #define _X86_64_PTRACE_H | ||
3 | |||
4 | #include <linux/compiler.h> /* For __user */ | ||
5 | #include <asm/ptrace-abi.h> | ||
6 | |||
7 | #ifndef __ASSEMBLY__ | ||
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; | ||
18 | unsigned long r10; | ||
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; | ||
27 | /* end of arguments */ | ||
28 | /* cpu exception frame or undefined */ | ||
29 | unsigned long rip; | ||
30 | unsigned long cs; | ||
31 | unsigned long eflags; | ||
32 | unsigned long rsp; | ||
33 | unsigned long ss; | ||
34 | /* top of stack page */ | ||
35 | }; | ||
36 | |||
37 | #endif | ||
38 | |||
39 | #if defined(__KERNEL__) && !defined(__ASSEMBLY__) | ||
40 | #define user_mode(regs) (!!((regs)->cs & 3)) | ||
41 | #define user_mode_vm(regs) user_mode(regs) | ||
42 | #define instruction_pointer(regs) ((regs)->rip) | ||
43 | #define regs_return_value(regs) ((regs)->rax) | ||
44 | |||
45 | extern unsigned long profile_pc(struct pt_regs *regs); | ||
46 | void signal_fault(struct pt_regs *regs, void __user *frame, char *where); | ||
47 | |||
48 | struct task_struct; | ||
49 | |||
50 | extern unsigned long | ||
51 | convert_rip_to_linear(struct task_struct *child, struct pt_regs *regs); | ||
52 | |||
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 | ||