source: trunk/packages/xen-3.1/xen-3.1/linux-2.6-xen-sparse/include/asm-i386/mach-xen/asm/ptrace.h @ 34

Last change on this file since 34 was 34, checked in by hartmans, 18 years ago

Add xen and xen-common

File size: 2.0 KB
Line 
1#ifndef _I386_PTRACE_H
2#define _I386_PTRACE_H
3
4#define EBX 0
5#define ECX 1
6#define EDX 2
7#define ESI 3
8#define EDI 4
9#define EBP 5
10#define EAX 6
11#define DS 7
12#define ES 8
13#define FS 9
14#define GS 10
15#define ORIG_EAX 11
16#define EIP 12
17#define CS  13
18#define EFL 14
19#define UESP 15
20#define SS   16
21#define FRAME_SIZE 17
22
23/* this struct defines the way the registers are stored on the
24   stack during a system call. */
25
26struct pt_regs {
27        long ebx;
28        long ecx;
29        long edx;
30        long esi;
31        long edi;
32        long ebp;
33        long eax;
34        int  xds;
35        int  xes;
36        long orig_eax;
37        long eip;
38        int  xcs;
39        long eflags;
40        long esp;
41        int  xss;
42};
43
44/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
45#define PTRACE_GETREGS            12
46#define PTRACE_SETREGS            13
47#define PTRACE_GETFPREGS          14
48#define PTRACE_SETFPREGS          15
49#define PTRACE_GETFPXREGS         18
50#define PTRACE_SETFPXREGS         19
51
52#define PTRACE_OLDSETOPTIONS         21
53
54#define PTRACE_GET_THREAD_AREA    25
55#define PTRACE_SET_THREAD_AREA    26
56
57#define PTRACE_SYSEMU             31
58#define PTRACE_SYSEMU_SINGLESTEP  32
59
60#ifdef __KERNEL__
61
62#include <asm/vm86.h>
63
64struct task_struct;
65extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code);
66
67/*
68 * user_mode_vm(regs) determines whether a register set came from user mode.
69 * This is true if V8086 mode was enabled OR if the register set was from
70 * protected mode with RPL-3 CS value.  This tricky test checks that with
71 * one comparison.  Many places in the kernel can bypass this full check
72 * if they have already ruled out V8086 mode, so user_mode(regs) can be used.
73 */
74static inline int user_mode(struct pt_regs *regs)
75{
76        return (regs->xcs & 2) != 0;
77}
78static inline int user_mode_vm(struct pt_regs *regs)
79{
80        return ((regs->xcs & 2) | (regs->eflags & VM_MASK)) != 0;
81}
82#define instruction_pointer(regs) ((regs)->eip)
83#if defined(CONFIG_SMP) && defined(CONFIG_FRAME_POINTER)
84extern unsigned long profile_pc(struct pt_regs *regs);
85#else
86#define profile_pc(regs) instruction_pointer(regs)
87#endif
88#endif /* __KERNEL__ */
89
90#endif
Note: See TracBrowser for help on using the repository browser.