VirtualBox

source: vbox/trunk/include/VBox/vmm/cpum.mac@ 55738

Last change on this file since 55738 was 55738, checked in by vboxsync, 10 years ago

CPUMR0A.asm,HMR0A.asm: Microsoft documents doesn't extend the non-volatile status code XMM to the high YMM part, the high part is volatile. Use xsave/xrstor to speed up the loading and saving of guest XMM, YMM and ZMM registers.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 8.2 KB
Line 
1;; @file
2; CPUM - CPU Monitor, Assembly header file.
3;
4
5;
6; Copyright (C) 2006-2015 Oracle Corporation
7;
8; This file is part of VirtualBox Open Source Edition (OSE), as
9; available from http://www.virtualbox.org. This file is free software;
10; you can redistribute it and/or modify it under the terms of the GNU
11; General Public License (GPL) as published by the Free Software
12; Foundation, in version 2 as it comes in the "COPYING" file of the
13; VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14; hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15;
16; The contents of this file may alternatively be used under the terms
17; of the Common Development and Distribution License Version 1.0
18; (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19; VirtualBox OSE distribution, in which case the provisions of the
20; CDDL are applicable instead of those of the GPL.
21;
22; You may elect to license modified versions of this file under the
23; terms and conditions of either the GPL or the CDDL or both.
24;
25
26%ifndef ___VBox_vmm_cpum_mac__
27%define ___VBox_vmm_cpum_mac__
28
29%include "iprt/asmdefs.mac"
30
31
32;;
33; The volatile XSAVE components when VBOX_WITH_KERNEL_USING_XMM is active.
34; @note ASSUMED to be at the most 32-bit in width at the moment.
35%ifdef VBOX_WITH_KERNEL_USING_XMM
36 %define CPUM_VOLATILE_XSAVE_GUEST_COMPONENTS (XSAVE_C_SSE | XSAVE_C_YMM | XSAVE_C_ZMM_HI256 | XSAVE_C_ZMM_16HI)
37%endif
38
39;;
40; CPUID leaf.
41; @remarks This structure is used by the patch manager and can only be extended
42; by adding to the end of it.
43struc CPUMCPUIDLEAF
44 .uLeaf resd 1
45 .uSubLeaf resd 1
46 .fSubLeafMask resd 1
47 .uEax resd 1
48 .uEbx resd 1
49 .uEcx resd 1
50 .uEdx resd 1
51 .fFlags resd 1
52endstruc
53%define CPUMCPUIDLEAF_F_INTEL_TOPOLOGY_SUBLEAVES RT_BIT_32(0)
54
55;;
56; For the default CPUID leaf value.
57; @remarks This is used by the patch manager and cannot be modified in any way.
58struc CPUMCPUID
59 .uEax resd 1
60 .uEbx resd 1
61 .uEcx resd 1
62 .uEdx resd 1
63endstruc
64
65
66;; @name Method used to deal with unknown CPUID leaves.
67;; @{
68%define CPUMUNKNOWNCPUID_DEFAULTS 1
69%define CPUMUNKNOWNCPUID_LAST_STD_LEAF 2
70%define CPUMUNKNOWNCPUID_LAST_STD_LEAF_WITH_ECX 3
71%define CPUMUNKNOWNCPUID_PASSTHRU 4
72;; @}
73
74
75;;
76; Registers frame.
77; This is used internally in TRPM, VMMSwitcher_GuestToHost_GuestCtx
78; and other places.
79struc CPUMCTXCORE
80 .eax resq 1
81 .ecx resq 1
82 .edx resq 1
83 .ebx resq 1
84 .esp resq 1
85 .ebp resq 1
86 .esi resq 1
87 .edi resq 1
88 .r8 resq 1
89 .r9 resq 1
90 .r10 resq 1
91 .r11 resq 1
92 .r12 resq 1
93 .r13 resq 1
94 .r14 resq 1
95 .r15 resq 1
96 .es.Sel resw 1
97 .es.PaddingSel resw 1
98 .es.ValidSel resw 1
99 .es.fFlags resw 1
100 .es.u64Base resq 1
101 .es.u32Limit resd 1
102 .es.Attr resd 1
103 .cs.Sel resw 1
104 .cs.PaddingSel resw 1
105 .cs.ValidSel resw 1
106 .cs.fFlags resw 1
107 .cs.u64Base resq 1
108 .cs.u32Limit resd 1
109 .cs.Attr resd 1
110 .ss.Sel resw 1
111 .ss.PaddingSel resw 1
112 .ss.ValidSel resw 1
113 .ss.fFlags resw 1
114 .ss.u64Base resq 1
115 .ss.u32Limit resd 1
116 .ss.Attr resd 1
117 .ds.Sel resw 1
118 .ds.PaddingSel resw 1
119 .ds.ValidSel resw 1
120 .ds.fFlags resw 1
121 .ds.u64Base resq 1
122 .ds.u32Limit resd 1
123 .ds.Attr resd 1
124 .fs.Sel resw 1
125 .fs.PaddingSel resw 1
126 .fs.ValidSel resw 1
127 .fs.fFlags resw 1
128 .fs.u64Base resq 1
129 .fs.u32Limit resd 1
130 .fs.Attr resd 1
131 .gs.Sel resw 1
132 .gs.PaddingSel resw 1
133 .gs.ValidSel resw 1
134 .gs.fFlags resw 1
135 .gs.u64Base resq 1
136 .gs.u32Limit resd 1
137 .gs.Attr resd 1
138 .eip resq 1
139 .eflags resq 1
140endstruc
141
142
143%define XSTATE_SIZE 8192
144
145struc CPUMCTX
146 .eax resq 1
147 .ecx resq 1
148 .edx resq 1
149 .ebx resq 1
150 .esp resq 1
151 .ebp resq 1
152 .esi resq 1
153 .edi resq 1
154 .r8 resq 1
155 .r9 resq 1
156 .r10 resq 1
157 .r11 resq 1
158 .r12 resq 1
159 .r13 resq 1
160 .r14 resq 1
161 .r15 resq 1
162 .es.Sel resw 1
163 .es.PaddingSel resw 1
164 .es.ValidSel resw 1
165 .es.fFlags resw 1
166 .es.u64Base resq 1
167 .es.u32Limit resd 1
168 .es.Attr resd 1
169 .cs.Sel resw 1
170 .cs.PaddingSel resw 1
171 .cs.ValidSel resw 1
172 .cs.fFlags resw 1
173 .cs.u64Base resq 1
174 .cs.u32Limit resd 1
175 .cs.Attr resd 1
176 .ss.Sel resw 1
177 .ss.PaddingSel resw 1
178 .ss.ValidSel resw 1
179 .ss.fFlags resw 1
180 .ss.u64Base resq 1
181 .ss.u32Limit resd 1
182 .ss.Attr resd 1
183 .ds.Sel resw 1
184 .ds.PaddingSel resw 1
185 .ds.ValidSel resw 1
186 .ds.fFlags resw 1
187 .ds.u64Base resq 1
188 .ds.u32Limit resd 1
189 .ds.Attr resd 1
190 .fs.Sel resw 1
191 .fs.PaddingSel resw 1
192 .fs.ValidSel resw 1
193 .fs.fFlags resw 1
194 .fs.u64Base resq 1
195 .fs.u32Limit resd 1
196 .fs.Attr resd 1
197 .gs.Sel resw 1
198 .gs.PaddingSel resw 1
199 .gs.ValidSel resw 1
200 .gs.fFlags resw 1
201 .gs.u64Base resq 1
202 .gs.u32Limit resd 1
203 .gs.Attr resd 1
204 .eip resq 1
205 .eflags resq 1
206 .cr0 resq 1
207 .cr2 resq 1
208 .cr3 resq 1
209 .cr4 resq 1
210 .dr resq 8
211 .gdtrPadding resw 3
212 .gdtr resw 0
213 .gdtr.cbGdt resw 1
214 .gdtr.pGdt resq 1
215 .idtrPadding resw 3
216 .idtr resw 0
217 .idtr.cbIdt resw 1
218 .idtr.pIdt resq 1
219 .ldtr.Sel resw 1
220 .ldtr.PaddingSel resw 1
221 .ldtr.ValidSel resw 1
222 .ldtr.fFlags resw 1
223 .ldtr.u64Base resq 1
224 .ldtr.u32Limit resd 1
225 .ldtr.Attr resd 1
226 .tr.Sel resw 1
227 .tr.PaddingSel resw 1
228 .tr.ValidSel resw 1
229 .tr.fFlags resw 1
230 .tr.u64Base resq 1
231 .tr.u32Limit resd 1
232 .tr.Attr resd 1
233 .SysEnter.cs resb 8
234 .SysEnter.eip resb 8
235 .SysEnter.esp resb 8
236 .msrEFER resb 8
237 .msrSTAR resb 8
238 .msrPAT resb 8
239 .msrLSTAR resb 8
240 .msrCSTAR resb 8
241 .msrSFMASK resb 8
242 .msrKERNELGSBASE resb 8
243 .msrApicBase resb 8
244 alignb 8
245 .aXcr resq 2
246 .fXStateMask resq 1
247 .pXStateR0 RTR0PTR_RES 1
248 .pXStateR3 RTR3PTR_RES 1
249 .pXStateRC RTRCPTR_RES 1
250 .aoffXState resw 64
251 alignb 64
252endstruc
253
254
255;;
256; Guest MSR state.
257struc CPUMCTXMSRS
258 .au64 resq 64
259endstruc
260
261
262%endif
263
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette