Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B, Instruction Set Reference, N-Z
Vol. 2B 5-13
VMX INSTRUCTION REFERENCE
VMPTRLD—Load Pointer to Virtual-Machine Control Structure
Description
Marks the current-VMCS pointer valid and loads it with the physical address in the
instruction operand. The instruction fails if its operand is not properly aligned, sets
unsupported physical-address bits, or is equal to the VMXON pointer. In addition, the
instruction fails if the 32 bits in memory referenced by the operand do not match the
VMCS revision identifier supported by this processor.
1
The operand of this instruction is always 64 bits and is always in memory.
Operation
IF (register operand) or (not in VMX operation) or (RFLAGS.VM = 1) or
(IA32_EFER.LMA = 1 and CS.L = 0)
THEN #UD;
ELSIF in VMX non-root operation
THEN VMexit;
ELSIF CPL
> 0
THEN #GP(0);
ELSE
addr ← contents of 64-bit in-memory source operand;
IF addr is not 4KB-aligned OR
(processor supports Intel 64 architecture and
addr sets any bits beyond the processor’s physical-address width) OR
processor does not support Intel 64 architecture and addr sets any bits in the range 63:32
THEN VMfail(VMPTRLD with invalid physical address);
ELSIF addr = VMXON pointer
THEN VMfail(VMPTRLD with VMXON pointer);
ELSE
rev ← 32 bits located at physical address addr;
IF rev ≠ VMCS revision identifier supported by processor
THEN VMfail(VMPTRLD with incorrect VMCS revision identifier);
ELSE
current-VMCS pointer ← addr;
VMsucceed;
FI;
Opcode Instruction Description
0F C7 /6 VMPTRLD m64 Loads the current VMCS pointer from memory.
1. Software should consult the VMX capability MSR VMX_BASIC to discover the VMCS revision iden-
tifier supported by this processor (see Appendix G, “VMX Capability Reporting Facility,”
in the
Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3B).