]> git.proxmox.com Git - mirror_edk2.git/blame - SourceLevelDebugPkg/Include/Ia32/ProcessorContext.h
Import SourceLevelDebugPkg.
[mirror_edk2.git] / SourceLevelDebugPkg / Include / Ia32 / ProcessorContext.h
CommitLineData
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