Intel 64 and IA-32 Architectures Software Developers Manual Volume 3B, System Programming Guide Part 2

Table Of Contents
Vol. 3 23-33
VM EXITS
A logical processor is in IA-32e mode after a VM exit only if the “host address-space
size” VM-exit control is 1. If the logical processor was in IA-32e mode before the
VM exit and this control is 0, a VMX abort occurs. See Section 23.7.
In addition to loading host state, VM exits clear address-range monitoring (Section
23.5.6).
After the state loading described in this section, VM exits may load MSRs from the
VM-exit MSR-load area (see Section 23.6). This loading occurs only after the state
loading described in this section.
23.5.1 Loading Host Control Registers, Debug Registers, MSRs
VM exits load new values for controls registers, debug registers, and some MSRs:
CR0, CR3, and CR4 are loaded from the CR0 field, the CR3 field, and the CR4
field, respectively, with the following exceptions:
The following bits are not modified:
For CR0, ET, CD, NW; bits 63:32 (on processors that support Intel 64
architecture), 28:19, 17, and 15:6; and any bits that are fixed in VMX
operation (see Section 19.8).
1
For CR3, bits 63:52 and bits in the range 51:32 beyond the processors
physical-address width (they are cleared to 0).
2
(This item applies only to
processors that support Intel 64 architecture.)
For CR4, any bits that are fixed in VMX operation (see Section 19.8).
CR4.PAE is set to 1 if the “host address-space size” VM-exit control is 1.
DR7 is set to 400H.
The following MSRs are established as follows:
The IA32_DEBUGCTL MSR is cleared to 00000000_00000000H.
The IA32_SYSENTER_CS MSR is loaded from the IA32_SYSENTER_CS field.
Since that field has only 32 bits, bits 63:32 of the MSR are cleared to 0.
IA32_SYSENTER_ESP MSR and IA32_SYSENTER_EIP MSR are loaded from
the IA32_SYSENTER_ESP field and the IA32_SYSENTER_EIP field, respec-
tively. On processors that do not support Intel 64 architecture, these fields
have only 32 bits; bits 63:32 of the MSRs are cleared to 0.
The following are performed on processors that support Intel 64 architecture:
1. Note that bits 28:19, 17, and 15:6 of CR0 and CR0.ET are unchanged by executions of MOV to
CR0. CR0.ET is always 1 and the other bits are always 0.
2. Software can determine a processor’s physical-address width by executing CPUID with
80000008H in EAX. The physical-address width is returned in bits 7:0 of EAX.