]>
Commit | Line | Data |
---|---|---|
18b144ea | 1 | /** @file\r |
2 | IA32/x64 architecture specific defintions needed by debug transfer protocol.It is only\r | |
3 | intended to be used by Debug related module implementation.\r | |
4 | \r | |
5 | Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>\r | |
6 | This program and the accompanying materials\r | |
7 | are licensed and made available under the terms and conditions of the BSD License\r | |
8 | which accompanies this distribution. The full text of the license may be found at\r | |
9 | http://opensource.org/licenses/bsd-license.php.\r | |
10 | \r | |
11 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r | |
12 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r | |
13 | \r | |
14 | **/\r | |
15 | \r | |
16 | #ifndef __PROCESSOR_CONTEXT_H__\r | |
17 | #define __PROCESSOR_CONTEXT_H__\r | |
18 | \r | |
19 | //\r | |
20 | // IA-32/x64 processor register index table\r | |
21 | //\r | |
22 | #define SOFT_DEBUGGER_REGISTER_DR0 0\r | |
23 | #define SOFT_DEBUGGER_REGISTER_DR1 1\r | |
24 | #define SOFT_DEBUGGER_REGISTER_DR2 2\r | |
25 | #define SOFT_DEBUGGER_REGISTER_DR3 3\r | |
26 | #define SOFT_DEBUGGER_REGISTER_DR6 4\r | |
27 | #define SOFT_DEBUGGER_REGISTER_DR7 5\r | |
28 | #define SOFT_DEBUGGER_REGISTER_EFLAGS 6\r | |
29 | #define SOFT_DEBUGGER_REGISTER_LDTR 7\r | |
30 | #define SOFT_DEBUGGER_REGISTER_TR 8\r | |
31 | #define SOFT_DEBUGGER_REGISTER_GDTR0 9 // the low 32bit of GDTR\r | |
32 | #define SOFT_DEBUGGER_REGISTER_GDTR1 10 // the high 32bit of GDTR\r | |
33 | #define SOFT_DEBUGGER_REGISTER_IDTR0 11 // the low 32bit of IDTR\r | |
34 | #define SOFT_DEBUGGER_REGISTER_IDTR1 12 // the high 32bot of IDTR\r | |
35 | #define SOFT_DEBUGGER_REGISTER_EIP 13\r | |
36 | #define SOFT_DEBUGGER_REGISTER_GS 14\r | |
37 | #define SOFT_DEBUGGER_REGISTER_FS 15\r | |
38 | #define SOFT_DEBUGGER_REGISTER_ES 16\r | |
39 | #define SOFT_DEBUGGER_REGISTER_DS 17\r | |
40 | #define SOFT_DEBUGGER_REGISTER_CS 18\r | |
41 | #define SOFT_DEBUGGER_REGISTER_SS 19\r | |
42 | #define SOFT_DEBUGGER_REGISTER_CR0 20\r | |
43 | #define SOFT_DEBUGGER_REGISTER_CR1 21\r | |
44 | #define SOFT_DEBUGGER_REGISTER_CR2 22\r | |
45 | #define SOFT_DEBUGGER_REGISTER_CR3 23\r | |
46 | #define SOFT_DEBUGGER_REGISTER_CR4 24\r | |
47 | \r | |
48 | #define SOFT_DEBUGGER_REGISTER_DI 25\r | |
49 | #define SOFT_DEBUGGER_REGISTER_SI 26\r | |
50 | #define SOFT_DEBUGGER_REGISTER_BP 27\r | |
51 | #define SOFT_DEBUGGER_REGISTER_SP 28\r | |
52 | #define SOFT_DEBUGGER_REGISTER_DX 29\r | |
53 | #define SOFT_DEBUGGER_REGISTER_CX 30\r | |
54 | #define SOFT_DEBUGGER_REGISTER_BX 31\r | |
55 | #define SOFT_DEBUGGER_REGISTER_AX 32\r | |
56 | \r | |
57 | //\r | |
58 | // This below registers are only available for x64 (not valid for Ia32 mode)\r | |
59 | //\r | |
60 | #define SOFT_DEBUGGER_REGISTER_CR8 33\r | |
61 | #define SOFT_DEBUGGER_REGISTER_R8 34\r | |
62 | #define SOFT_DEBUGGER_REGISTER_R9 35\r | |
63 | #define SOFT_DEBUGGER_REGISTER_R10 36\r | |
64 | #define SOFT_DEBUGGER_REGISTER_R11 37\r | |
65 | #define SOFT_DEBUGGER_REGISTER_R12 38\r | |
66 | #define SOFT_DEBUGGER_REGISTER_R13 39\r | |
67 | #define SOFT_DEBUGGER_REGISTER_R14 40\r | |
68 | #define SOFT_DEBUGGER_REGISTER_R15 41\r | |
69 | \r | |
70 | #define SOFT_DEBUGGER_REGISTER_MAX_COUNT_IA32 33\r | |
71 | #define SOFT_DEBUGGER_REGISTER_MAX_COUNT_X64 42\r | |
72 | \r | |
73 | //\r | |
74 | // This below registers are FP / MMX / XMM registers\r | |
75 | //\r | |
76 | #define SOFT_DEBUGGER_REGISTER_FP_BASE 50\r | |
77 | \r | |
78 | #define SOFT_DEBUGGER_REGISTER_FP_FCW (SOFT_DEBUGGER_REGISTER_FP_BASE + 0)\r | |
79 | #define SOFT_DEBUGGER_REGISTER_FP_FSW (SOFT_DEBUGGER_REGISTER_FP_BASE + 1)\r | |
80 | #define SOFT_DEBUGGER_REGISTER_FP_FTW (SOFT_DEBUGGER_REGISTER_FP_BASE + 2)\r | |
81 | #define SOFT_DEBUGGER_REGISTER_FP_OPCODE (SOFT_DEBUGGER_REGISTER_FP_BASE + 3)\r | |
82 | #define SOFT_DEBUGGER_REGISTER_FP_EIP (SOFT_DEBUGGER_REGISTER_FP_BASE + 4)\r | |
83 | #define SOFT_DEBUGGER_REGISTER_FP_CS (SOFT_DEBUGGER_REGISTER_FP_BASE + 5)\r | |
84 | #define SOFT_DEBUGGER_REGISTER_FP_DATAOFFSET (SOFT_DEBUGGER_REGISTER_FP_BASE + 6)\r | |
85 | #define SOFT_DEBUGGER_REGISTER_FP_DS (SOFT_DEBUGGER_REGISTER_FP_BASE + 7)\r | |
86 | #define SOFT_DEBUGGER_REGISTER_FP_MXCSR (SOFT_DEBUGGER_REGISTER_FP_BASE + 8)\r | |
87 | #define SOFT_DEBUGGER_REGISTER_FP_MXCSR_MASK (SOFT_DEBUGGER_REGISTER_FP_BASE + 9)\r | |
88 | #define SOFT_DEBUGGER_REGISTER_ST0 (SOFT_DEBUGGER_REGISTER_FP_BASE + 10)\r | |
89 | #define SOFT_DEBUGGER_REGISTER_ST1 (SOFT_DEBUGGER_REGISTER_FP_BASE + 11)\r | |
90 | #define SOFT_DEBUGGER_REGISTER_ST2 (SOFT_DEBUGGER_REGISTER_FP_BASE + 12)\r | |
91 | #define SOFT_DEBUGGER_REGISTER_ST3 (SOFT_DEBUGGER_REGISTER_FP_BASE + 13)\r | |
92 | #define SOFT_DEBUGGER_REGISTER_ST4 (SOFT_DEBUGGER_REGISTER_FP_BASE + 14)\r | |
93 | #define SOFT_DEBUGGER_REGISTER_ST5 (SOFT_DEBUGGER_REGISTER_FP_BASE + 15)\r | |
94 | #define SOFT_DEBUGGER_REGISTER_ST6 (SOFT_DEBUGGER_REGISTER_FP_BASE + 16)\r | |
95 | #define SOFT_DEBUGGER_REGISTER_ST7 (SOFT_DEBUGGER_REGISTER_FP_BASE + 17)\r | |
96 | #define SOFT_DEBUGGER_REGISTER_XMM0 (SOFT_DEBUGGER_REGISTER_FP_BASE + 18)\r | |
97 | #define SOFT_DEBUGGER_REGISTER_XMM1 (SOFT_DEBUGGER_REGISTER_FP_BASE + 19)\r | |
98 | #define SOFT_DEBUGGER_REGISTER_XMM2 (SOFT_DEBUGGER_REGISTER_FP_BASE + 20)\r | |
99 | #define SOFT_DEBUGGER_REGISTER_XMM3 (SOFT_DEBUGGER_REGISTER_FP_BASE + 21)\r | |
100 | #define SOFT_DEBUGGER_REGISTER_XMM4 (SOFT_DEBUGGER_REGISTER_FP_BASE + 22)\r | |
101 | #define SOFT_DEBUGGER_REGISTER_XMM5 (SOFT_DEBUGGER_REGISTER_FP_BASE + 23)\r | |
102 | #define SOFT_DEBUGGER_REGISTER_XMM6 (SOFT_DEBUGGER_REGISTER_FP_BASE + 24)\r | |
103 | #define SOFT_DEBUGGER_REGISTER_XMM7 (SOFT_DEBUGGER_REGISTER_FP_BASE + 25)\r | |
104 | #define SOFT_DEBUGGER_REGISTER_XMM8 (SOFT_DEBUGGER_REGISTER_FP_BASE + 26)\r | |
105 | #define SOFT_DEBUGGER_REGISTER_XMM9 (SOFT_DEBUGGER_REGISTER_FP_BASE + 27)\r | |
106 | #define SOFT_DEBUGGER_REGISTER_XMM10 (SOFT_DEBUGGER_REGISTER_FP_BASE + 28)\r | |
107 | #define SOFT_DEBUGGER_REGISTER_XMM11 (SOFT_DEBUGGER_REGISTER_FP_BASE + 29)\r | |
108 | #define SOFT_DEBUGGER_REGISTER_XMM12 (SOFT_DEBUGGER_REGISTER_FP_BASE + 30)\r | |
109 | #define SOFT_DEBUGGER_REGISTER_XMM13 (SOFT_DEBUGGER_REGISTER_FP_BASE + 31)\r | |
110 | #define SOFT_DEBUGGER_REGISTER_XMM14 (SOFT_DEBUGGER_REGISTER_FP_BASE + 32)\r | |
111 | #define SOFT_DEBUGGER_REGISTER_XMM15 (SOFT_DEBUGGER_REGISTER_FP_BASE + 33)\r | |
112 | #define SOFT_DEBUGGER_REGISTER_MM0 (SOFT_DEBUGGER_REGISTER_FP_BASE + 34)\r | |
113 | #define SOFT_DEBUGGER_REGISTER_MM1 (SOFT_DEBUGGER_REGISTER_FP_BASE + 35)\r | |
114 | #define SOFT_DEBUGGER_REGISTER_MM2 (SOFT_DEBUGGER_REGISTER_FP_BASE + 36)\r | |
115 | #define SOFT_DEBUGGER_REGISTER_MM3 (SOFT_DEBUGGER_REGISTER_FP_BASE + 37)\r | |
116 | #define SOFT_DEBUGGER_REGISTER_MM4 (SOFT_DEBUGGER_REGISTER_FP_BASE + 38)\r | |
117 | #define SOFT_DEBUGGER_REGISTER_MM5 (SOFT_DEBUGGER_REGISTER_FP_BASE + 39)\r | |
118 | #define SOFT_DEBUGGER_REGISTER_MM6 (SOFT_DEBUGGER_REGISTER_FP_BASE + 40)\r | |
119 | #define SOFT_DEBUGGER_REGISTER_MM7 (SOFT_DEBUGGER_REGISTER_FP_BASE + 41)\r | |
120 | \r | |
121 | //\r | |
122 | // This below registers are for GDT, LDT, TSS\r | |
123 | //\r | |
124 | #define SOFT_DEBUGGER_REGISTER_OTHERS_BASE 100\r | |
125 | \r | |
126 | #define SOFT_DEBUGGER_REGISTER_CS_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 0)\r | |
127 | #define SOFT_DEBUGGER_REGISTER_SS_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 1)\r | |
128 | #define SOFT_DEBUGGER_REGISTER_GS_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 2)\r | |
129 | #define SOFT_DEBUGGER_REGISTER_FS_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 3)\r | |
130 | #define SOFT_DEBUGGER_REGISTER_ES_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 4)\r | |
131 | #define SOFT_DEBUGGER_REGISTER_DS_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 5)\r | |
132 | #define SOFT_DEBUGGER_REGISTER_LDT_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 6)\r | |
133 | #define SOFT_DEBUGGER_REGISTER_TSS_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 7)\r | |
134 | \r | |
135 | #define SOFT_DEBUGGER_REGISTER_CS_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 8)\r | |
136 | #define SOFT_DEBUGGER_REGISTER_SS_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 9)\r | |
137 | #define SOFT_DEBUGGER_REGISTER_GS_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 10)\r | |
138 | #define SOFT_DEBUGGER_REGISTER_FS_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 11)\r | |
139 | #define SOFT_DEBUGGER_REGISTER_ES_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 12)\r | |
140 | #define SOFT_DEBUGGER_REGISTER_DS_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 13)\r | |
141 | #define SOFT_DEBUGGER_REGISTER_LDT_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 14)\r | |
142 | #define SOFT_DEBUGGER_REGISTER_TSS_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 15)\r | |
143 | \r | |
144 | #define SOFT_DEBUGGER_REGISTER_CSAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 16)\r | |
145 | #define SOFT_DEBUGGER_REGISTER_SSAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 17)\r | |
146 | #define SOFT_DEBUGGER_REGISTER_GSAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 18)\r | |
147 | #define SOFT_DEBUGGER_REGISTER_FSAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 19)\r | |
148 | #define SOFT_DEBUGGER_REGISTER_ESAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 20)\r | |
149 | #define SOFT_DEBUGGER_REGISTER_DSAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 21)\r | |
150 | #define SOFT_DEBUGGER_REGISTER_LDTAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 22)\r | |
151 | #define SOFT_DEBUGGER_REGISTER_TSSAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 23)\r | |
152 | \r | |
153 | #define SOFT_DEBUGGER_REGISTER_IDT_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 24)\r | |
154 | #define SOFT_DEBUGGER_REGISTER_GDT_LIM (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 25)\r | |
155 | #define SOFT_DEBUGGER_REGISTER_IDT_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 26)\r | |
156 | #define SOFT_DEBUGGER_REGISTER_GDT_BAS (SOFT_DEBUGGER_REGISTER_OTHERS_BASE + 27)\r | |
157 | \r | |
158 | \r | |
159 | #define SOFT_DEBUGGER_MSR_EFER (0xC0000080)\r | |
160 | \r | |
161 | //\r | |
162 | // Definition for the Index field for DEBUG_DATA_READ_REGISTER_GROUP\r | |
163 | //\r | |
164 | #define SOFT_DEBUGGER_REGISTER_GROUP_GPDRS32 1 //for cs,ds,es,fs,gs,ss,eflags,ebp,eip,esp,eax,ebx,ecx,edx,esi,edi,dr0,dr1,dr2,dr3,dr6,dr7\r | |
165 | #define SOFT_DEBUGGER_REGISTER_GROUP_SEGMENT_LIMITS32 2 //for cslim,sslim,gslim,fslim,eslim,dslim,ldtlim,tsslim\r | |
166 | #define SOFT_DEBUGGER_REGISTER_GROUP_SEGMENT_BASES32 3 //for csbas,ssbas,gsbas,fsbas,esbas,dsbas,ldtbas,tssbas\r | |
167 | \r | |
168 | #define SOFT_DEBUGGER_REGISTER_GROUP_SEGMENT64 4 //for cs,ds,es,fs,gs,ss\r | |
169 | #define SOFT_DEBUGGER_REGISTER_GROUP_GP2_64 5 //for eflags,rbp,rip,rsp\r | |
170 | #define SOFT_DEBUGGER_REGISTER_GROUP_GP64 6 //for rax,rbx,rcx,rdx,rsi,rdi,r8,r9,r10,r11,r12,r13,r14,r15\r | |
171 | #define SOFT_DEBUGGER_REGISTER_GROUP_DR64 7 //for dr0,dr1,dr2,dr3,dr6,dr7\r | |
172 | #define SOFT_DEBUGGER_REGISTER_GROUP_SEGMENT_BAS_LIM64 8 //for ldtbas,ldtlim,gdtbas,gdtlim,cslim,sslim,gslim,fslim,eslim,dslim,ldtlim,tsslim,csbas,ssbas,gsbas,fsbas,esbas,dsbas,ldtbas,tssbas\r | |
173 | #define SOFT_DEBUGGER_REGISTER_GROUP_SEGMENT_BASES64 9 //for idtr,tr,csas,ssas,gsas,fsas,esas,dsas,idtas,tssas\r | |
174 | #define SOFT_DEBUGGER_REGISTER_GROUP_CR64 10 //for cr0,cr2,cr3,cr4,cr8\r | |
175 | #define SOFT_DEBUGGER_REGISTER_GROUP_XMM64 11 //for xmm0,xmm1,xmm2,xmm3,xmm4,xmm5,xmm6,xmm7,xmm8,xmm9,xmm10,xmm11,xmm12,xmm13,xmm14,xmm15\r | |
176 | \r | |
177 | \r | |
178 | #endif\r | |
179 | \r |