Stackdb
Stackdb is a stackable, multi-target and -level source debugger and memory forensics library.
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
arch_x86.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 The University of Utah
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License as
6  * published by the Free Software Foundation; either version 2 of
7  * the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
17  */
18 
19 #ifndef __ARCH_X86_H__
20 #define __ARCH_X86_H__
21 
22 #include "arch.h"
23 
24 extern struct arch arch_x86;
25 
26 #define X86_EF_TF (0x00000100)
27 #define X86_EF_IF (0x00000200)
28 #define X86_EF_RF (0x00010000)
29 
30 /*
31  * This is the SVR4 DWARF map from gdb/gdb/i386-tdep.c .
32  */
33 
34 #define ARCH_X86_REG_COUNT 60
35 
36 /* 32-bit GP regs. */
37 #define REG_X86_EAX 0
38 #define REG_X86_ECX 1
39 #define REG_X86_EDX 2
40 #define REG_X86_EBX 3
41 #define REG_X86_ESP 4
42 #define REG_X86_EBP 5
43 #define REG_X86_ESI 6
44 #define REG_X86_EDI 7
45 #define REG_X86_EIP 8
46 #define REG_X86_EFLAGS 9
47 
48 /* FP regs. */
49 #define REG_X86_ST0 11
50 #define REG_X86_ST1 12
51 #define REG_X86_ST2 13
52 #define REG_X86_ST3 14
53 #define REG_X86_ST4 15
54 #define REG_X86_ST5 16
55 #define REG_X86_ST6 17
56 #define REG_X86_ST7 18
57 
58 #define REG_X86_XMM0 21
59 #define REG_X86_XMM1 22
60 #define REG_X86_XMM2 23
61 #define REG_X86_XMM3 24
62 #define REG_X86_XMM4 25
63 #define REG_X86_XMM5 26
64 #define REG_X86_XMM6 27
65 #define REG_X86_XMM7 28
66 
67 #define REG_X86_MM0 29
68 #define REG_X86_MM1 30
69 #define REG_X86_MM2 31
70 #define REG_X86_MM3 32
71 #define REG_X86_MM4 33
72 #define REG_X86_MM5 34
73 #define REG_X86_MM6 35
74 #define REG_X86_MM7 36
75 
76 #define REG_X86_X87CW 37
77 #define REG_X86_FCTRL REG_X86_X87CW
78 #define REG_X86_X87SW 38
79 #define REG_X86_FSTAT REG_X86_X87SW
80 #define REG_X86_MXCSR 39
81 
82 /* These are technically 32-bit, but who cares. */
83 #define REG_X86_ES 40
84 #define REG_X86_CS 41
85 #define REG_X86_SS 42
86 #define REG_X86_DS 43
87 #define REG_X86_FS 44
88 #define REG_X86_GS 45
89 
90 /*
91  * DWARF cannot address the rest of these.
92  */
93 
94 /*
95  * These registers are not "official" registers DWARF debuggers should
96  * ask for, but we want to map them somewhere!
97  */
98 
99 #define REG_X86_CR0 46
100 #define REG_X86_CR1 47
101 #define REG_X86_CR2 48
102 #define REG_X86_CR3 49
103 #define REG_X86_CR4 50
104 
105 #define REG_X86_DR0 51
106 #define REG_X86_DR1 52
107 #define REG_X86_DR2 53
108 #define REG_X86_DR3 54
109 #define REG_X86_DR4 55
110 
111 #define REG_X86_DR6 57
112 #define REG_X86_DR7 58
113 
114 #define REG_X86_MSR_EFER 59
115 
116 #endif /* __ARCH_X86_H__ */
struct arch arch_x86
Definition: arch_x86.c:79
Definition: arch.h:116