| Opcode/Instruction | Op/En | Description |
|---|---|---|
| NP 0F C7 /7 VMPTRST m64 | M | Stores the current VMCS pointer into memory. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| M | ModRM:r/m (w) | NA | NA | NA |
Stores the current-VMCS pointer into a specified memory address. The operand of this instruction is always 64 bits and is always in memory.
IF (register operand) or (not in VMX operation) or (CR0.PE = 0) 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
64-bit in-memory destination operand ← current-VMCS pointer;
VMsucceed;
FI;
See the operation section and Section 30.2.
| #GP(0) | If the current privilege level is not 0. |
| If the memory destination operand effective address is outside the CS, DS, ES, FS, or GS segment limit. | |
| If the DS, ES, FS, or GS register contains an unusable segment. | |
| If the destination operand is located in a read-only data segment or any code segment. | |
| #PF(fault-code) | If a page fault occurs in accessing the memory destination operand. |
| #SS(0) | If the memory destination operand effective address is outside the SS segment limit. |
| If the SS register contains an unusable segment. | |
| #UD | If operand is a register. |
| If not in VMX operation. |
| #UD | The VMPTRST instruction is not recognized in real-address mode. |
| #UD | The VMPTRST instruction is not recognized in virtual-8086 mode. |
| #UD | The VMPTRST instruction is not recognized in compatibility mode. |
| #GP(0) | If the current privilege level is not 0. |
| If the destination operand is in the CS, DS, ES, FS, or GS segments and the memory address is in a non-canonical form. | |
| #PF(fault-code) | If a page fault occurs in accessing the memory destination operand. |
| #SS(0) | If the destination operand is in the SS segment and the memory address is in a non-canonical form. |
| #UD | If operand is a register. |
| If not in VMX operation. |