91 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
	
#ifndef _I386_PTRACE_H
 | 
						|
#define _I386_PTRACE_H
 | 
						|
 | 
						|
#include <asm/types.h>
 | 
						|
 | 
						|
#define EBX 0
 | 
						|
#define ECX 1
 | 
						|
#define EDX 2
 | 
						|
#define ESI 3
 | 
						|
#define EDI 4
 | 
						|
#define EBP 5
 | 
						|
#define EAX 6
 | 
						|
#define DS 7
 | 
						|
#define ES 8
 | 
						|
#define FS 9
 | 
						|
#define GS 10
 | 
						|
#define ORIG_EAX 11
 | 
						|
#define EIP 12
 | 
						|
#define CS  13
 | 
						|
#define EFL 14
 | 
						|
#define UESP 15
 | 
						|
#define SS   16
 | 
						|
#define FRAME_SIZE 17
 | 
						|
 | 
						|
/* this struct defines the way the registers are stored on the
 | 
						|
   stack during a system call. */
 | 
						|
 | 
						|
struct pt_regs {
 | 
						|
	long ebx;
 | 
						|
	long ecx;
 | 
						|
	long edx;
 | 
						|
	long esi;
 | 
						|
	long edi;
 | 
						|
	long ebp;
 | 
						|
	long eax;
 | 
						|
	int  xds;
 | 
						|
	int  xes;
 | 
						|
	int  xfs;
 | 
						|
	int  xgs;
 | 
						|
	long orig_eax;
 | 
						|
	long eip;
 | 
						|
	int  xcs;
 | 
						|
	long eflags;
 | 
						|
	long esp;
 | 
						|
	int  xss;
 | 
						|
}  __attribute__ ((packed));
 | 
						|
 | 
						|
struct irq_regs {
 | 
						|
	/* Pushed by irq_common_entry */
 | 
						|
	long ebx;
 | 
						|
	long ecx;
 | 
						|
	long edx;
 | 
						|
	long esi;
 | 
						|
	long edi;
 | 
						|
	long ebp;
 | 
						|
	long esp;
 | 
						|
	long eax;
 | 
						|
	long xds;
 | 
						|
	long xes;
 | 
						|
	long xfs;
 | 
						|
	long xgs;
 | 
						|
	long xss;
 | 
						|
	/* Pushed by vector handler (irq_<num>) */
 | 
						|
	long irq_id;
 | 
						|
	/* Pushed by cpu in response to interrupt */
 | 
						|
	long eip;
 | 
						|
	long xcs;
 | 
						|
	long eflags;
 | 
						|
}  __attribute__ ((packed));
 | 
						|
 | 
						|
/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
 | 
						|
#define PTRACE_GETREGS            12
 | 
						|
#define PTRACE_SETREGS            13
 | 
						|
#define PTRACE_GETFPREGS          14
 | 
						|
#define PTRACE_SETFPREGS          15
 | 
						|
#define PTRACE_GETFPXREGS         18
 | 
						|
#define PTRACE_SETFPXREGS         19
 | 
						|
 | 
						|
#define PTRACE_SETOPTIONS         21
 | 
						|
 | 
						|
/* options set using PTRACE_SETOPTIONS */
 | 
						|
#define PTRACE_O_TRACESYSGOOD     0x00000001
 | 
						|
 | 
						|
#ifdef __KERNEL__
 | 
						|
#define user_mode(regs) ((VM_MASK & (regs)->eflags) || (3 & (regs)->xcs))
 | 
						|
#define instruction_pointer(regs) ((regs)->eip)
 | 
						|
extern void show_regs(struct pt_regs *);
 | 
						|
#endif
 | 
						|
 | 
						|
#endif
 |