1/*
2 ****************************************************************************
3 * (C) 2005 - Grzegorz Milos - Intel Reseach Cambridge
4 ****************************************************************************
5 *
6 *        File: traps.h
7 *      Author: Grzegorz Milos (gm281@cam.ac.uk)
8 *
9 *        Date: Jun 2005
10 *
11 * Environment: Xen Minimal OS
12 * Description: Deals with traps
13 *
14 ****************************************************************************
15 */
16
17#ifndef _TRAPS_H_
18#define _TRAPS_H_
19
20#ifdef __i386__
21struct pt_regs {
22	long ebx;
23	long ecx;
24	long edx;
25	long esi;
26	long edi;
27	long ebp;
28	long eax;
29	int  xds;
30	int  xes;
31	long orig_eax;
32	long eip;
33	int  xcs;
34	long eflags;
35	long esp;
36	int  xss;
37};
38#elif __x86_64__
39
40struct pt_regs {
41	unsigned long r15;
42	unsigned long r14;
43	unsigned long r13;
44	unsigned long r12;
45	unsigned long rbp;
46	unsigned long rbx;
47/* arguments: non interrupts/non tracing syscalls only save upto here*/
48 	unsigned long r11;
49	unsigned long r10;
50	unsigned long r9;
51	unsigned long r8;
52	unsigned long rax;
53	unsigned long rcx;
54	unsigned long rdx;
55	unsigned long rsi;
56	unsigned long rdi;
57	unsigned long orig_rax;
58/* end of arguments */
59/* cpu exception frame or undefined */
60	unsigned long rip;
61	unsigned long cs;
62	unsigned long eflags;
63	unsigned long rsp;
64	unsigned long ss;
65/* top of stack page */
66};
67
68
69#endif
70
71void dump_regs(struct pt_regs *regs);
72void stack_walk(void);
73
74#define TRAP_PF_PROT   0x1
75#define TRAP_PF_WRITE  0x2
76#define TRAP_PF_USER   0x4
77
78#endif /* _TRAPS_H_ */
79