ptrace_64.h 2.0 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3
#ifndef _X86_64_PTRACE_H
#define _X86_64_PTRACE_H

4
#include <linux/compiler.h>	/* For __user */
5
#include <asm/ptrace-abi.h>
L
Linus Torvalds 已提交
6

7
#ifndef __ASSEMBLY__
L
Linus Torvalds 已提交
8 9 10 11 12 13 14 15 16 17

struct pt_regs {
	unsigned long r15;
	unsigned long r14;
	unsigned long r13;
	unsigned long r12;
	unsigned long rbp;
	unsigned long rbx;
/* arguments: non interrupts/non tracing syscalls only save upto here*/
 	unsigned long r11;
18
	unsigned long r10;
L
Linus Torvalds 已提交
19 20 21 22 23 24 25 26
	unsigned long r9;
	unsigned long r8;
	unsigned long rax;
	unsigned long rcx;
	unsigned long rdx;
	unsigned long rsi;
	unsigned long rdi;
	unsigned long orig_rax;
27
/* end of arguments */
L
Linus Torvalds 已提交
28 29 30
/* cpu exception frame or undefined */
	unsigned long rip;
	unsigned long cs;
31 32
	unsigned long eflags;
	unsigned long rsp;
L
Linus Torvalds 已提交
33
	unsigned long ss;
34
/* top of stack page */
L
Linus Torvalds 已提交
35 36 37 38 39 40
};

#endif

#if defined(__KERNEL__) && !defined(__ASSEMBLY__) 
#define user_mode(regs) (!!((regs)->cs & 3))
41
#define user_mode_vm(regs) user_mode(regs)
L
Linus Torvalds 已提交
42
#define instruction_pointer(regs) ((regs)->rip)
43 44
#define regs_return_value(regs) ((regs)->rax)

L
Linus Torvalds 已提交
45 46 47
extern unsigned long profile_pc(struct pt_regs *regs);
void signal_fault(struct pt_regs *regs, void __user *frame, char *where);

48 49 50 51 52
struct task_struct;

extern unsigned long
convert_rip_to_linear(struct task_struct *child, struct pt_regs *regs);

L
Linus Torvalds 已提交
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
enum {
        EF_CF   = 0x00000001,
        EF_PF   = 0x00000004,
        EF_AF   = 0x00000010,
        EF_ZF   = 0x00000040,
        EF_SF   = 0x00000080,
        EF_TF   = 0x00000100,
        EF_IE   = 0x00000200,
        EF_DF   = 0x00000400,
        EF_OF   = 0x00000800,
        EF_IOPL = 0x00003000,
        EF_IOPL_RING0 = 0x00000000,
        EF_IOPL_RING1 = 0x00001000,
        EF_IOPL_RING2 = 0x00002000,
        EF_NT   = 0x00004000,   /* nested task */
        EF_RF   = 0x00010000,   /* resume */
        EF_VM   = 0x00020000,   /* virtual mode */
        EF_AC   = 0x00040000,   /* alignment */
        EF_VIF  = 0x00080000,   /* virtual interrupt */
        EF_VIP  = 0x00100000,   /* virtual interrupt pending */
        EF_ID   = 0x00200000,   /* id */
};

#endif

#endif