2005-04-17 06:20:36 +08:00
|
|
|
#ifndef _X86_64_PTRACE_H
|
|
|
|
#define _X86_64_PTRACE_H
|
|
|
|
|
[PATCH] Split i386 and x86_64 ptrace.h
The use of SEGMENT_RPL_MASK in the i386 ptrace.h introduced by
x86-allow-a-kernel-to-not-be-in-ring-0.patch broke the UML build, as UML
includes the underlying architecture's ptrace.h, but has no easy access to the
x86 segment definitions.
Rather than kludging around this, as in the past, this patch splits the
userspace-usable parts, which are the bits that UML needs, of ptrace.h into
ptrace-abi.h, which is included back into ptrace.h. Thus, there is no net
effect on i386.
As a side-effect, this creates a ptrace header which is close to being usable
in /usr/include.
x86_64 is also treated in this way for consistency. There was some trailing
whitespace there, which is cleaned up.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 14:33:09 +08:00
|
|
|
#include <asm/ptrace-abi.h>
|
2005-04-17 06:20:36 +08:00
|
|
|
|
[PATCH] Split i386 and x86_64 ptrace.h
The use of SEGMENT_RPL_MASK in the i386 ptrace.h introduced by
x86-allow-a-kernel-to-not-be-in-ring-0.patch broke the UML build, as UML
includes the underlying architecture's ptrace.h, but has no easy access to the
x86 segment definitions.
Rather than kludging around this, as in the past, this patch splits the
userspace-usable parts, which are the bits that UML needs, of ptrace.h into
ptrace-abi.h, which is included back into ptrace.h. Thus, there is no net
effect on i386.
As a side-effect, this creates a ptrace header which is close to being usable
in /usr/include.
x86_64 is also treated in this way for consistency. There was some trailing
whitespace there, which is cleaned up.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 14:33:09 +08:00
|
|
|
#ifndef __ASSEMBLY__
|
2005-04-17 06:20:36 +08:00
|
|
|
|
|
|
|
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;
|
[PATCH] Split i386 and x86_64 ptrace.h
The use of SEGMENT_RPL_MASK in the i386 ptrace.h introduced by
x86-allow-a-kernel-to-not-be-in-ring-0.patch broke the UML build, as UML
includes the underlying architecture's ptrace.h, but has no easy access to the
x86 segment definitions.
Rather than kludging around this, as in the past, this patch splits the
userspace-usable parts, which are the bits that UML needs, of ptrace.h into
ptrace-abi.h, which is included back into ptrace.h. Thus, there is no net
effect on i386.
As a side-effect, this creates a ptrace header which is close to being usable
in /usr/include.
x86_64 is also treated in this way for consistency. There was some trailing
whitespace there, which is cleaned up.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 14:33:09 +08:00
|
|
|
unsigned long r10;
|
2005-04-17 06:20:36 +08:00
|
|
|
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;
|
[PATCH] Split i386 and x86_64 ptrace.h
The use of SEGMENT_RPL_MASK in the i386 ptrace.h introduced by
x86-allow-a-kernel-to-not-be-in-ring-0.patch broke the UML build, as UML
includes the underlying architecture's ptrace.h, but has no easy access to the
x86 segment definitions.
Rather than kludging around this, as in the past, this patch splits the
userspace-usable parts, which are the bits that UML needs, of ptrace.h into
ptrace-abi.h, which is included back into ptrace.h. Thus, there is no net
effect on i386.
As a side-effect, this creates a ptrace header which is close to being usable
in /usr/include.
x86_64 is also treated in this way for consistency. There was some trailing
whitespace there, which is cleaned up.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 14:33:09 +08:00
|
|
|
/* end of arguments */
|
2005-04-17 06:20:36 +08:00
|
|
|
/* cpu exception frame or undefined */
|
|
|
|
unsigned long rip;
|
|
|
|
unsigned long cs;
|
[PATCH] Split i386 and x86_64 ptrace.h
The use of SEGMENT_RPL_MASK in the i386 ptrace.h introduced by
x86-allow-a-kernel-to-not-be-in-ring-0.patch broke the UML build, as UML
includes the underlying architecture's ptrace.h, but has no easy access to the
x86 segment definitions.
Rather than kludging around this, as in the past, this patch splits the
userspace-usable parts, which are the bits that UML needs, of ptrace.h into
ptrace-abi.h, which is included back into ptrace.h. Thus, there is no net
effect on i386.
As a side-effect, this creates a ptrace header which is close to being usable
in /usr/include.
x86_64 is also treated in this way for consistency. There was some trailing
whitespace there, which is cleaned up.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 14:33:09 +08:00
|
|
|
unsigned long eflags;
|
|
|
|
unsigned long rsp;
|
2005-04-17 06:20:36 +08:00
|
|
|
unsigned long ss;
|
[PATCH] Split i386 and x86_64 ptrace.h
The use of SEGMENT_RPL_MASK in the i386 ptrace.h introduced by
x86-allow-a-kernel-to-not-be-in-ring-0.patch broke the UML build, as UML
includes the underlying architecture's ptrace.h, but has no easy access to the
x86 segment definitions.
Rather than kludging around this, as in the past, this patch splits the
userspace-usable parts, which are the bits that UML needs, of ptrace.h into
ptrace-abi.h, which is included back into ptrace.h. Thus, there is no net
effect on i386.
As a side-effect, this creates a ptrace header which is close to being usable
in /usr/include.
x86_64 is also treated in this way for consistency. There was some trailing
whitespace there, which is cleaned up.
Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-09-26 14:33:09 +08:00
|
|
|
/* top of stack page */
|
2005-04-17 06:20:36 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(__KERNEL__) && !defined(__ASSEMBLY__)
|
|
|
|
#define user_mode(regs) (!!((regs)->cs & 3))
|
2005-06-23 15:08:44 +08:00
|
|
|
#define user_mode_vm(regs) user_mode(regs)
|
2005-04-17 06:20:36 +08:00
|
|
|
#define instruction_pointer(regs) ((regs)->rip)
|
2006-10-02 17:17:31 +08:00
|
|
|
#define regs_return_value(regs) ((regs)->rax)
|
|
|
|
|
2005-04-17 06:20:36 +08:00
|
|
|
extern unsigned long profile_pc(struct pt_regs *regs);
|
|
|
|
void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
|
|
|
|
|
2005-04-17 06:24:59 +08:00
|
|
|
struct task_struct;
|
|
|
|
|
|
|
|
extern unsigned long
|
|
|
|
convert_rip_to_linear(struct task_struct *child, struct pt_regs *regs);
|
|
|
|
|
2005-04-17 06:20:36 +08:00
|
|
|
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
|