Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Virtual processor registers are uniquely identified by register names (32-bit identifiers).
Syntax
typedef enum
{
// Register names, see below
} HV_REGISTER_NAME;
Common Registers (Architecture Neutral)
Suspend / Migration
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterExplicitSuspend | 0x00000000 | Explicit VP suspend (set/clear by caller) |
| HvRegisterInterceptSuspend | 0x00000001 | VP suspended due to intercept / hypervisor action |
| HvRegisterInstructionEmulationHints | 0x00000002 | Instruction emulation hints / statistics (if supported) |
| HvRegisterDispatchSuspend | 0x00000003 | Scheduler dispatch induced suspension |
| HvRegisterInternalActivityState | 0x00000004 | Internal state summary (read-only) |
Version & Feature Discovery (128-bit unless noted)
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterHypervisorVersion | 0x00000100 | Matches CPUID 0x40000002 |
| HvRegisterPrivilegesAndFeaturesInfo | 0x00000200 | Matches CPUID 0x40000003 |
| HvRegisterFeaturesInfo | 0x00000201 | Matches CPUID 0x40000004 |
| HvRegisterImplementationLimitsInfo | 0x00000202 | Matches CPUID 0x40000005 |
| HvRegisterHardwareFeaturesInfo | 0x00000203 | Matches CPUID 0x40000006 |
| HvRegisterCpuManagementFeaturesInfo | 0x00000204 | Matches CPUID 0x40000007 |
| HvRegisterPasidFeaturesInfo | 0x00000205 | Matches CPUID 0x40000008 |
| HvRegisterNestedVirtFeaturesInfo | 0x00000207 | Matches CPUID 0x4000000A |
| HvRegisterIptFeaturesInfo | 0x00000208 | Matches CPUID 0x4000000B |
Guest Crash Registers
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterGuestCrashP0 | 0x00000210 | Crash parameter 0 |
| HvRegisterGuestCrashP1 | 0x00000211 | Crash parameter 1 |
| HvRegisterGuestCrashP2 | 0x00000212 | Crash parameter 2 |
| HvRegisterGuestCrashP3 | 0x00000213 | Crash parameter 3 |
| HvRegisterGuestCrashP4 | 0x00000214 | Crash parameter 4 |
| HvRegisterGuestCrashCtl | 0x00000215 | Crash control / notification |
Frequency / Timing
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterProcessorClockFrequency | 0x00000240 | Nominal core frequency (kHz) |
| HvRegisterInterruptClockFrequency | 0x00000241 | Timer frequency (kHz) |
Idle & Debug
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterGuestIdle | 0x00000250 | Guest idle hint / residency info |
| HvRegisterDebugDeviceOptions | 0x00000260 | Debug / device options |
| HvRegisterMemoryZeroingControl | 0x00000270 | Memory zeroing behavior control |
Pending Events & Interrupt State (common encodings differ per arch)
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterPendingEvent0 | 0x00010004 | Pending event slot 0 |
| HvRegisterPendingEvent1 | 0x00010005 | Pending event slot 1 |
| HvRegisterDeliverabilityNotifications | 0x00010006 | Deliverability notification bitmap |
| HvRegisterPendingEvent2 | 0x00010008 | Pending event slot 2 |
| HvRegisterPendingEvent3 | 0x00010009 | Pending event slot 3 |
Runtime / Context
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterVpRuntime | 0x00090000 | VP runtime (time units) |
| HvRegisterGuestOsId | 0x00090002 | Guest OS identification |
| HvRegisterVpIndex | 0x00090003 | VP index (read-only) |
| HvRegisterTimeRefCount | 0x00090004 | Time reference counter |
| HvRegisterCpuManagementVersion | 0x00090007 | CPU management interface version |
| HvRegisterVpAssistPage | 0x00090013 | VP assist page GPA |
| HvRegisterVpRootSignalCount | 0x00090014 | Root signal count |
| HvRegisterReferenceTsc | 0x00090017 | Reference TSC page GPA |
| HvRegisterReferenceTscSequence | 0x0009001A | Reference TSC sequence |
| HvRegisterNestedVpIndex | 0x00091003 | Nested VP index |
Performance Statistics
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterStatsPartitionRetail | 0x00090020 | Partition stats (retail subset) |
| HvRegisterStatsVpRetail | 0x00090022 | VP stats (retail) |
Synthetic Interrupt Controller (SynIC) – Primary
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterSint0 | 0x000A0000 | Synthetic interrupt vector 0 |
| HvRegisterSint1 | 0x000A0001 | Synthetic interrupt vector 1 |
| HvRegisterSint2 | 0x000A0002 | Synthetic interrupt vector 2 |
| HvRegisterSint3 | 0x000A0003 | Synthetic interrupt vector 3 |
| HvRegisterSint4 | 0x000A0004 | Synthetic interrupt vector 4 |
| HvRegisterSint5 | 0x000A0005 | Synthetic interrupt vector 5 |
| HvRegisterSint6 | 0x000A0006 | Synthetic interrupt vector 6 |
| HvRegisterSint7 | 0x000A0007 | Synthetic interrupt vector 7 |
| HvRegisterSint8 | 0x000A0008 | Synthetic interrupt vector 8 |
| HvRegisterSint9 | 0x000A0009 | Synthetic interrupt vector 9 |
| HvRegisterSint10 | 0x000A000A | Synthetic interrupt vector 10 |
| HvRegisterSint11 | 0x000A000B | Synthetic interrupt vector 11 |
| HvRegisterSint12 | 0x000A000C | Synthetic interrupt vector 12 |
| HvRegisterSint13 | 0x000A000D | Synthetic interrupt vector 13 |
| HvRegisterSint14 | 0x000A000E | Synthetic interrupt vector 14 |
| HvRegisterSint15 | 0x000A000F | Synthetic interrupt vector 15 |
| HvRegisterScontrol | 0x000A0010 | SynIC control |
| HvRegisterSversion | 0x000A0011 | SynIC version |
| HvRegisterSifp | 0x000A0012 | SynIC EOI/FIFO page |
| HvRegisterSipp | 0x000A0013 | SynIC interrupt parameter page |
| HvRegisterEom | 0x000A0014 | End-of-message |
| HvRegisterSirbp | 0x000A0015 | Resend bitmap pointer |
Synthetic Timers
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterStimer0Config | 0x000B0000 | Timer 0 config |
| HvRegisterStimer0Count | 0x000B0001 | Timer 0 count |
| HvRegisterStimer1Config | 0x000B0002 | Timer 1 config |
| HvRegisterStimer1Count | 0x000B0003 | Timer 1 count |
| HvRegisterStimer2Config | 0x000B0004 | Timer 2 config |
| HvRegisterStimer2Count | 0x000B0005 | Timer 2 count |
| HvRegisterStimer3Config | 0x000B0006 | Timer 3 config |
| HvRegisterStimer3Count | 0x000B0007 | Timer 3 count |
| HvRegisterStimeUnhaltedTimerConfig | 0x000B0100 | Unhalted timer config |
| HvRegisterStimeUnhaltedTimerCount | 0x000B0101 | Unhalted timer count |
Virtual Secure Mode (VSM) / Isolation
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterVsmCodePageOffsets | 0x000D0002 | VSM code page offsets |
| HvRegisterVsmVpStatus | 0x000D0003 | VSM VP status |
| HvRegisterVsmPartitionStatus | 0x000D0004 | VSM partition status |
| HvRegisterVsmVina | 0x000D0005 | VSM VINA |
| HvRegisterVsmCapabilities | 0x000D0006 | VSM capability bits |
| HvRegisterVsmPartitionConfig | 0x000D0007 | VSM partition config |
| HvRegisterVsmVpSecureConfigVtl0 | 0x000D0010 | Secure config VTL0 |
| HvRegisterVsmVpSecureConfigVtl1 | 0x000D0011 | Secure config VTL1 |
| HvRegisterVsmVpSecureConfigVtl2 | 0x000D0012 | Secure config VTL2 |
| HvRegisterVsmVpSecureConfigVtl3 | 0x000D0013 | Secure config VTL3 |
| HvRegisterVsmVpSecureConfigVtl4 | 0x000D0014 | Secure config VTL4 |
| HvRegisterVsmVpSecureConfigVtl5 | 0x000D0015 | Secure config VTL5 |
| HvRegisterVsmVpSecureConfigVtl6 | 0x000D0016 | Secure config VTL6 |
| HvRegisterVsmVpSecureConfigVtl7 | 0x000D0017 | Secure config VTL7 |
| HvRegisterVsmVpSecureConfigVtl8 | 0x000D0018 | Secure config VTL8 |
| HvRegisterVsmVpSecureConfigVtl9 | 0x000D0019 | Secure config VTL9 |
| HvRegisterVsmVpSecureConfigVtl10 | 0x000D001A | Secure config VTL10 |
| HvRegisterVsmVpSecureConfigVtl11 | 0x000D001B | Secure config VTL11 |
| HvRegisterVsmVpSecureConfigVtl12 | 0x000D001C | Secure config VTL12 |
| HvRegisterVsmVpSecureConfigVtl13 | 0x000D001D | Secure config VTL13 |
| HvRegisterVsmVpSecureConfigVtl14 | 0x000D001E | Secure config VTL14 |
| HvRegisterVsmVpWaitForTlbLock | 0x000D0020 | Wait for TLB lock (synchronization) |
| HvRegisterIsolationCapabilities | 0x000D0100 | Isolation capability bits |
x64 Architecture Registers
Interrupt & Pending State (x64 additions)
| Register | Identifier | Comment |
|---|---|---|
| HvRegisterPendingInterruption | 0x00010002 | Pending interruption descriptor |
| HvRegisterInterruptState | 0x00010003 | Interrupt state flags |
| HvX64RegisterPendingDebugException | 0x00010007 | Pending debug exception info |
General Purpose & Instruction State
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterRax | 0x00020000 | RAX |
| HvX64RegisterRcx | 0x00020001 | RCX |
| HvX64RegisterRdx | 0x00020002 | RDX |
| HvX64RegisterRbx | 0x00020003 | RBX |
| HvX64RegisterRsp | 0x00020004 | RSP |
| HvX64RegisterRbp | 0x00020005 | RBP |
| HvX64RegisterRsi | 0x00020006 | RSI |
| HvX64RegisterRdi | 0x00020007 | RDI |
| HvX64RegisterR8 | 0x00020008 | R8 |
| HvX64RegisterR9 | 0x00020009 | R9 |
| HvX64RegisterR10 | 0x0002000A | R10 |
| HvX64RegisterR11 | 0x0002000B | R11 |
| HvX64RegisterR12 | 0x0002000C | R12 |
| HvX64RegisterR13 | 0x0002000D | R13 |
| HvX64RegisterR14 | 0x0002000E | R14 |
| HvX64RegisterR15 | 0x0002000F | R15 |
| HvX64RegisterRip | 0x00020010 | RIP |
| HvX64RegisterRflags | 0x00020011 | RFLAGS |
Floating Point / SIMD
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterXmm0 | 0x00030000 | XMM0 |
| HvX64RegisterXmm1 | 0x00030001 | XMM1 |
| HvX64RegisterXmm2 | 0x00030002 | XMM2 |
| HvX64RegisterXmm3 | 0x00030003 | XMM3 |
| HvX64RegisterXmm4 | 0x00030004 | XMM4 |
| HvX64RegisterXmm5 | 0x00030005 | XMM5 |
| HvX64RegisterXmm6 | 0x00030006 | XMM6 |
| HvX64RegisterXmm7 | 0x00030007 | XMM7 |
| HvX64RegisterXmm8 | 0x00030008 | XMM8 |
| HvX64RegisterXmm9 | 0x00030009 | XMM9 |
| HvX64RegisterXmm10 | 0x0003000A | XMM10 |
| HvX64RegisterXmm11 | 0x0003000B | XMM11 |
| HvX64RegisterXmm12 | 0x0003000C | XMM12 |
| HvX64RegisterXmm13 | 0x0003000D | XMM13 |
| HvX64RegisterXmm14 | 0x0003000E | XMM14 |
| HvX64RegisterXmm15 | 0x0003000F | XMM15 |
| HvX64RegisterFpMmx0 | 0x00030010 | ST0 / MMX0 |
| HvX64RegisterFpMmx1 | 0x00030011 | ST1 / MMX1 |
| HvX64RegisterFpMmx2 | 0x00030012 | ST2 / MMX2 |
| HvX64RegisterFpMmx3 | 0x00030013 | ST3 / MMX3 |
| HvX64RegisterFpMmx4 | 0x00030014 | ST4 / MMX4 |
| HvX64RegisterFpMmx5 | 0x00030015 | ST5 / MMX5 |
| HvX64RegisterFpMmx6 | 0x00030016 | ST6 / MMX6 |
| HvX64RegisterFpMmx7 | 0x00030017 | ST7 / MMX7 |
| HvX64RegisterFpControlStatus | 0x00030018 | x87 control/status |
| HvX64RegisterXmmControlStatus | 0x00030019 | MXCSR |
Control & Intermediate Control Registers
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterCr0 | 0x00040000 | CR0 |
| HvX64RegisterCr2 | 0x00040001 | CR2 |
| HvX64RegisterCr3 | 0x00040002 | CR3 |
| HvX64RegisterCr4 | 0x00040003 | CR4 |
| HvX64RegisterCr8 | 0x00040004 | CR8 |
| HvX64RegisterXfem | 0x00040005 | Extended feature enable mask |
| HvX64RegisterIntermediateCr0 | 0x00041000 | Virtualization shadow CR0 |
| HvX64RegisterIntermediateCr4 | 0x00041003 | Virtualization shadow CR4 |
| HvX64RegisterIntermediateCr8 | 0x00041004 | Virtualization shadow CR8 |
Debug Registers
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterDr0 | 0x00050000 | DR0 |
| HvX64RegisterDr1 | 0x00050001 | DR1 |
| HvX64RegisterDr2 | 0x00050002 | DR2 |
| HvX64RegisterDr3 | 0x00050003 | DR3 |
| HvX64RegisterDr6 | 0x00050004 | DR6 |
| HvX64RegisterDr7 | 0x00050005 | DR7 |
Segment Registers
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterEs | 0x00060000 | ES |
| HvX64RegisterCs | 0x00060001 | CS |
| HvX64RegisterSs | 0x00060002 | SS |
| HvX64RegisterDs | 0x00060003 | DS |
| HvX64RegisterFs | 0x00060004 | FS |
| HvX64RegisterGs | 0x00060005 | GS |
| HvX64RegisterLdtr | 0x00060006 | LDTR |
| HvX64RegisterTr | 0x00060007 | Task register |
Table Registers
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterIdtr | 0x00070000 | IDT descriptor |
| HvX64RegisterGdtr | 0x00070001 | GDT descriptor |
Virtualized MSRs – Core & System
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterTsc | 0x00080000 | TSC |
| HvX64RegisterEfer | 0x00080001 | EFER |
| HvX64RegisterKernelGsBase | 0x00080002 | KERNEL_GS_BASE |
| HvX64RegisterApicBase | 0x00080003 | APIC_BASE |
| HvX64RegisterPat | 0x00080004 | PAT |
| HvX64RegisterSysenterCs | 0x00080005 | SYSENTER_CS |
| HvX64RegisterSysenterEip | 0x00080006 | SYSENTER_EIP |
| HvX64RegisterSysenterEsp | 0x00080007 | SYSENTER_ESP |
| HvX64RegisterStar | 0x00080008 | STAR |
| HvX64RegisterLstar | 0x00080009 | LSTAR |
| HvX64RegisterCstar | 0x0008000A | CSTAR |
| HvX64RegisterSfmask | 0x0008000B | SFMASK |
| HvX64RegisterInitialApicId | 0x0008000C | Initial APIC ID |
Cache Control (MTRR Set)
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterMsrMtrrCap | 0x0008000D | MTRR capability |
| HvX64RegisterMsrMtrrDefType | 0x0008000E | Default type |
| HvX64RegisterMsrMtrrPhysBase0 | 0x00080010 | Variable range base 0 |
| HvX64RegisterMsrMtrrPhysBase1 | 0x00080011 | Variable range base 1 |
| HvX64RegisterMsrMtrrPhysBase2 | 0x00080012 | Variable range base 2 |
| HvX64RegisterMsrMtrrPhysBase3 | 0x00080013 | Variable range base 3 |
| HvX64RegisterMsrMtrrPhysBase4 | 0x00080014 | Variable range base 4 |
| HvX64RegisterMsrMtrrPhysBase5 | 0x00080015 | Variable range base 5 |
| HvX64RegisterMsrMtrrPhysBase6 | 0x00080016 | Variable range base 6 |
| HvX64RegisterMsrMtrrPhysBase7 | 0x00080017 | Variable range base 7 |
| HvX64RegisterMsrMtrrPhysBase8 | 0x00080018 | Variable range base 8 |
| HvX64RegisterMsrMtrrPhysBase9 | 0x00080019 | Variable range base 9 |
| HvX64RegisterMsrMtrrPhysBaseA | 0x0008001A | Variable range base A |
| HvX64RegisterMsrMtrrPhysBaseB | 0x0008001B | Variable range base B |
| HvX64RegisterMsrMtrrPhysBaseC | 0x0008001C | Variable range base C |
| HvX64RegisterMsrMtrrPhysBaseD | 0x0008001D | Variable range base D |
| HvX64RegisterMsrMtrrPhysBaseE | 0x0008001E | Variable range base E |
| HvX64RegisterMsrMtrrPhysBaseF | 0x0008001F | Variable range base F |
| HvX64RegisterMsrMtrrPhysMask0 | 0x00080040 | Variable range mask 0 |
| HvX64RegisterMsrMtrrPhysMask1 | 0x00080041 | Variable range mask 1 |
| HvX64RegisterMsrMtrrPhysMask2 | 0x00080042 | Variable range mask 2 |
| HvX64RegisterMsrMtrrPhysMask3 | 0x00080043 | Variable range mask 3 |
| HvX64RegisterMsrMtrrPhysMask4 | 0x00080044 | Variable range mask 4 |
| HvX64RegisterMsrMtrrPhysMask5 | 0x00080045 | Variable range mask 5 |
| HvX64RegisterMsrMtrrPhysMask6 | 0x00080046 | Variable range mask 6 |
| HvX64RegisterMsrMtrrPhysMask7 | 0x00080047 | Variable range mask 7 |
| HvX64RegisterMsrMtrrPhysMask8 | 0x00080048 | Variable range mask 8 |
| HvX64RegisterMsrMtrrPhysMask9 | 0x00080049 | Variable range mask 9 |
| HvX64RegisterMsrMtrrPhysMaskA | 0x0008004A | Variable range mask A |
| HvX64RegisterMsrMtrrPhysMaskB | 0x0008004B | Variable range mask B |
| HvX64RegisterMsrMtrrPhysMaskC | 0x0008004C | Variable range mask C |
| HvX64RegisterMsrMtrrPhysMaskD | 0x0008004D | Variable range mask D |
| HvX64RegisterMsrMtrrPhysMaskE | 0x0008004E | Variable range mask E |
| HvX64RegisterMsrMtrrPhysMaskF | 0x0008004F | Variable range mask F |
| HvX64RegisterMsrMtrrFix64k00000 | 0x00080070 | Fixed range |
| HvX64RegisterMsrMtrrFix16k80000 | 0x00080071 | Fixed range |
| HvX64RegisterMsrMtrrFix16kA0000 | 0x00080072 | Fixed range |
| HvX64RegisterMsrMtrrFix4kC0000 | 0x00080073 | Fixed 4K C0000 |
| HvX64RegisterMsrMtrrFix4kC8000 | 0x00080074 | Fixed 4K C8000 |
| HvX64RegisterMsrMtrrFix4kD0000 | 0x00080075 | Fixed 4K D0000 |
| HvX64RegisterMsrMtrrFix4kD8000 | 0x00080076 | Fixed 4K D8000 |
| HvX64RegisterMsrMtrrFix4kE0000 | 0x00080077 | Fixed 4K E0000 |
| HvX64RegisterMsrMtrrFix4kE8000 | 0x00080078 | Fixed 4K E8000 |
| HvX64RegisterMsrMtrrFix4kF0000 | 0x00080079 | Fixed 4K F0000 |
| HvX64RegisterMsrMtrrFix4kF8000 | 0x0008007A | Fixed 4K F8000 |
Additional Virtualized MSRs & Controls
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterTscAux | 0x0008007B | TSC_AUX |
| HvX64RegisterBndcfgs | 0x0008007C | MPX BNDcfgs |
| HvX64RegisterDebugCtl | 0x0008007D | DEBUGCTL |
| HvX64RegisterMCount | 0x0008007E | Machine count (internal) |
| HvX64RegisterACount | 0x0008007F | Auxiliary count (internal) |
| HvX64RegisterSgxLaunchControl0 | 0x00080080 | SGX launch control 0 |
| HvX64RegisterSgxLaunchControl1 | 0x00080081 | SGX launch control 1 |
| HvX64RegisterSgxLaunchControl2 | 0x00080082 | SGX launch control 2 |
| HvX64RegisterSgxLaunchControl3 | 0x00080083 | SGX launch control 3 |
| HvX64RegisterSpecCtrl | 0x00080084 | IA32_SPEC_CTRL |
| HvX64RegisterPredCmd | 0x00080085 | IA32_PRED_CMD |
| HvX64RegisterVirtSpecCtrl | 0x00080086 | Virtual spec control |
| HvX64RegisterTscVirtualOffset | 0x00080087 | Virtual TSC offset |
| HvX64RegisterTsxCtrl | 0x00080088 | TSX control |
| HvX64RegisterXss | 0x0008008B | IA32_XSS |
| HvX64RegisterUCet | 0x0008008C | User CET |
| HvX64RegisterSCet | 0x0008008D | Supervisor CET |
| HvX64RegisterSsp | 0x0008008E | Shadow stack pointer |
| HvX64RegisterPl0Ssp | 0x0008008F | PL0 shadow stack pointer |
| HvX64RegisterPl1Ssp | 0x00080090 | PL1 shadow stack pointer |
| HvX64RegisterPl2Ssp | 0x00080091 | PL2 shadow stack pointer |
| HvX64RegisterPl3Ssp | 0x00080092 | PL3 shadow stack pointer |
| HvX64RegisterInterruptSspTableAddr | 0x00080093 | IST-like SSP table |
| HvX64RegisterTscDeadline | 0x00080095 | TSC deadline |
| HvX64RegisterTscAdjust | 0x00080096 | TSC adjust |
| HvX64RegisterUmwaitControl | 0x00080098 | UMWAIT/TPAUSE control |
| HvX64RegisterXfd | 0x00080099 | XFD |
| HvX64RegisterXfdErr | 0x0008009A | XFD error status |
Feature / Nested Virtualization Capability MSRs
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterMsrIa32MiscEnable | 0x000800A0 | IA32_MISC_ENABLE |
| HvX64RegisterIa32FeatureControl | 0x000800A1 | IA32_FEATURE_CONTROL |
| HvX64RegisterIa32VmxBasic | 0x000800A2 | VMX Basic |
| HvX64RegisterIa32VmxPinbasedCtls | 0x000800A3 | VMX Pinbased controls |
| HvX64RegisterIa32VmxExitCtls | 0x000800A5 | VMX Exit controls |
| HvX64RegisterIa32VmxEntryCtls | 0x000800A6 | VMX Entry controls |
| HvX64RegisterIa32VmxMisc | 0x000800A7 | VMX misc |
| HvX64RegisterIa32VmxCr0Fixed0 | 0x000800A8 | VMX CR0 fixed0 |
| HvX64RegisterIa32VmxCr0Fixed1 | 0x000800A9 | VMX CR0 fixed1 |
| HvX64RegisterIa32VmxCr4Fixed0 | 0x000800AA | VMX CR4 fixed0 |
| HvX64RegisterIa32VmxCr4Fixed1 | 0x000800AB | VMX CR4 fixed1 |
| HvX64RegisterIa32VmxVmcsEnum | 0x000800AC | VMX VMCS enum |
| HvX64RegisterIa32VmxProcbasedCtls2 | 0x000800AD | Secondary proc-based controls |
| HvX64RegisterIa32VmxEptVpidCap | 0x000800AE | EPT/VPID capabilities |
| HvX64RegisterIa32VmxTruePinbasedCtls | 0x000800AF | VMX True pinbased controls |
| HvX64RegisterIa32VmxTrueProcbasedCtls | 0x000800B0 | VMX True primary proc-based controls |
| HvX64RegisterIa32VmxTrueExitCtls | 0x000800B1 | VMX True exit controls |
| HvX64RegisterIa32VmxTrueEntryCtls | 0x000800B2 | VMX True entry controls |
| HvX64RegisterAmdVmHsavePa | 0x000800B3 | SVM HSAVE PA |
| HvX64RegisterAmdVmCr | 0x000800B4 | SVM VM_CR |
Performance Monitoring & Tracing
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterPerfGlobalCtrl | 0x00081000 | Perf global control |
| HvX64RegisterPerfGlobalStatus | 0x00081001 | Perf global status |
| HvX64RegisterPerfGlobalInUse | 0x00081002 | Perf in-use mask |
| HvX64RegisterFixedCtrCtrl | 0x00081003 | Fixed counter control |
| HvX64RegisterDsArea | 0x00081004 | DS area base |
| HvX64RegisterPebsEnable | 0x00081005 | PEBS enable |
| HvX64RegisterPebsLdLat | 0x00081006 | PEBS load latency |
| HvX64RegisterPebsFrontend | 0x00081007 | PEBS frontend |
| HvX64RegisterRtitCtl | 0x00081008 | PT control |
| HvX64RegisterRtitStatus | 0x00081009 | PT status |
| HvX64RegisterRtitOutputBase | 0x0008100A | PT output base |
| HvX64RegisterRtitOutputMaskPtrs | 0x0008100B | PT output mask/ptrs |
| HvX64RegisterRtitCr3Match | 0x0008100C | PT CR3 match |
| HvX64RegisterPerfEvtSel0 | 0x00081100 | First programmable event select |
| HvX64RegisterPmc0 | 0x00081200 | First PMC |
| HvX64RegisterFixedCtr0 | 0x00081300 | Fixed counter 0 |
| HvX64RegisterLbrTos | 0x00082000 | LBR top of stack |
| HvX64RegisterLbrSelect | 0x00082001 | LBR select |
| HvX64RegisterLerFromLip | 0x00082002 | Last exception from |
| HvX64RegisterLerToLip | 0x00082003 | Last exception to |
| HvX64RegisterLbrFrom0 | 0x00082100 | LBR from 0 |
| HvX64RegisterLbrTo0 | 0x00082200 | LBR to 0 |
| HvX64RegisterLbrInfo0 | 0x00083300 | LBR info 0 |
APIC (x2APIC Mapped) Registers
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterApicId | 0x00084802 | APIC ID |
| HvX64RegisterApicVersion | 0x00084803 | APIC version |
| HvX64RegisterApicTpr | 0x00084808 | Task priority |
| HvX64RegisterApicPpr | 0x0008480A | Processor priority |
| HvX64RegisterApicEoi | 0x0008480B | End of interrupt |
| HvX64RegisterApicLdr | 0x0008480D | Logical dest |
| HvX64RegisterApicSpurious | 0x0008480F | Spurious vector |
| HvX64RegisterApicIsr0 | 0x00084810 | In-service 0 |
| HvX64RegisterApicIsr1 | 0x00084811 | In-service 1 |
| HvX64RegisterApicIsr2 | 0x00084812 | In-service 2 |
| HvX64RegisterApicIsr3 | 0x00084813 | In-service 3 |
| HvX64RegisterApicIsr4 | 0x00084814 | In-service 4 |
| HvX64RegisterApicIsr5 | 0x00084815 | In-service 5 |
| HvX64RegisterApicIsr6 | 0x00084816 | In-service 6 |
| HvX64RegisterApicIsr7 | 0x00084817 | In-service 7 |
| HvX64RegisterApicTmr0 | 0x00084818 | Trigger mode 0 |
| HvX64RegisterApicTmr1 | 0x00084819 | Trigger mode 1 |
| HvX64RegisterApicTmr2 | 0x0008481A | Trigger mode 2 |
| HvX64RegisterApicTmr3 | 0x0008481B | Trigger mode 3 |
| HvX64RegisterApicTmr4 | 0x0008481C | Trigger mode 4 |
| HvX64RegisterApicTmr5 | 0x0008481D | Trigger mode 5 |
| HvX64RegisterApicTmr6 | 0x0008481E | Trigger mode 6 |
| HvX64RegisterApicTmr7 | 0x0008481F | Trigger mode 7 |
| HvX64RegisterApicIrr0 | 0x00084820 | Interrupt request 0 |
| HvX64RegisterApicIrr1 | 0x00084821 | Interrupt request 1 |
| HvX64RegisterApicIrr2 | 0x00084822 | Interrupt request 2 |
| HvX64RegisterApicIrr3 | 0x00084823 | Interrupt request 3 |
| HvX64RegisterApicIrr4 | 0x00084824 | Interrupt request 4 |
| HvX64RegisterApicIrr5 | 0x00084825 | Interrupt request 5 |
| HvX64RegisterApicIrr6 | 0x00084826 | Interrupt request 6 |
| HvX64RegisterApicIrr7 | 0x00084827 | Interrupt request 7 |
| HvX64RegisterApicEse | 0x00084828 | Extended state enable |
| HvX64RegisterApicIcr | 0x00084830 | Interrupt command |
| HvX64RegisterApicLvtTimer | 0x00084832 | LVT Timer |
| HvX64RegisterApicLvtThermal | 0x00084833 | LVT Thermal |
| HvX64RegisterApicLvtPerfmon | 0x00084834 | LVT PerfMon |
| HvX64RegisterApicLvtLint0 | 0x00084835 | LVT LINT0 |
| HvX64RegisterApicLvtLint1 | 0x00084836 | LVT LINT1 |
| HvX64RegisterApicLvtError | 0x00084837 | LVT Error |
| HvX64RegisterApicInitCount | 0x00084838 | Timer initial count |
| HvX64RegisterApicCurrentCount | 0x00084839 | Timer current count |
| HvX64RegisterApicDivide | 0x0008483E | Divide config |
| HvX64RegisterApicSelfIpi | 0x0008483F | Self IPI |
Hypervisor-defined (Misc) & Synthetic MSRs
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterHypercall | 0x00090001 | Hypercall control MSR |
| HvX64RegisterSyntheticEoi | 0x00090010 | Synthetic EOI |
| HvX64RegisterSyntheticIcr | 0x00090011 | Synthetic ICR |
| HvX64RegisterSyntheticTpr | 0x00090012 | Synthetic TPR |
| HvX64RegisterEmulatedTimerPeriod | 0x00090030 | Timer assist period |
| HvX64RegisterEmulatedTimerControl | 0x00090031 | Timer assist control |
| HvX64RegisterPmTimerAssist | 0x00090032 | PM timer assist |
AMD SEV Configuration
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterSevControl | 0x00090040 | SEV control |
| HvX64RegisterSevGhcbGpa | 0x00090041 | GHCB GPA |
| HvX64RegisterSevAvicGpa | 0x00090043 | See HV_X64_REGISTER_SEV_GPA_PAGE |
Nested State
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterNestedGuestState | 0x00090050 | Nested guest state blob |
| HvX64RegisterNestedCurrentVmGpa | 0x00090051 | Current nested VM GPA |
| HvX64RegisterNestedVmxInvEpt | 0x00090052 | INV_EPT descriptor |
| HvX64RegisterNestedVmxInvVpid | 0x00090053 | INV_VPID descriptor |
Intercept Control
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterCrInterceptControl | 0x000E0000 | Intercept control mask |
| HvX64RegisterCrInterceptCr0Mask | 0x000E0001 | CR0 intercept mask |
| HvX64RegisterCrInterceptCr4Mask | 0x000E0002 | CR4 intercept mask |
| HvX64RegisterCrInterceptIa32MiscEnableMask | 0x000E0003 | IA32_MISC_ENABLE intercept mask |
x64 GHCB (SEV-ES/SNP)
| Register | Identifier | Comment |
|---|---|---|
| HvX64RegisterGhcb | 0x00090019 | GHCB MSR proxy (guest) |
ARM64 Architecture Registers
Deprecated registers are documented for compatibility with older OS releases.
General Purpose
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterX0 | 0x00020000 | X0 |
| HvArm64RegisterX1 | 0x00020001 | X1 |
| HvArm64RegisterX2 | 0x00020002 | X2 |
| HvArm64RegisterX3 | 0x00020003 | X3 |
| HvArm64RegisterX4 | 0x00020004 | X4 |
| HvArm64RegisterX5 | 0x00020005 | X5 |
| HvArm64RegisterX6 | 0x00020006 | X6 |
| HvArm64RegisterX7 | 0x00020007 | X7 |
| HvArm64RegisterX8 | 0x00020008 | X8 |
| HvArm64RegisterX9 | 0x00020009 | X9 |
| HvArm64RegisterX10 | 0x0002000A | X10 |
| HvArm64RegisterX11 | 0x0002000B | X11 |
| HvArm64RegisterX12 | 0x0002000C | X12 |
| HvArm64RegisterX13 | 0x0002000D | X13 |
| HvArm64RegisterX14 | 0x0002000E | X14 |
| HvArm64RegisterX15 | 0x0002000F | X15 |
| HvArm64RegisterX16 | 0x00020010 | X16 |
| HvArm64RegisterX17 | 0x00020011 | X17 |
| HvArm64RegisterX18 | 0x00020012 | X18 |
| HvArm64RegisterX19 | 0x00020013 | X19 |
| HvArm64RegisterX20 | 0x00020014 | X20 |
| HvArm64RegisterX21 | 0x00020015 | X21 |
| HvArm64RegisterX22 | 0x00020016 | X22 |
| HvArm64RegisterX23 | 0x00020017 | X23 |
| HvArm64RegisterX24 | 0x00020018 | X24 |
| HvArm64RegisterX25 | 0x00020019 | X25 |
| HvArm64RegisterX26 | 0x0002001A | X26 |
| HvArm64RegisterX27 | 0x0002001B | X27 |
| HvArm64RegisterX28 | 0x0002001C | X28 |
| HvArm64RegisterFp (X29) | 0x0002001D | Frame pointer |
| HvArm64RegisterLr (X30) | 0x0002001E | Link register |
| HvArm64RegisterSp | 0x0002001F | Stack pointer (Deprecated) |
| HvArm64RegisterSpEl0 | 0x00020020 | SP_EL0 (Deprecated) |
| HvArm64RegisterSpEl1 | 0x00020021 | SP_EL1 (Deprecated) |
| HvArm64RegisterPc | 0x00020022 | Program counter |
| HvArm64RegisterXzr | 0x0002FFFE | Zero register |
Floating Point / SIMD / SVE
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterQ0 | 0x00030000 | Q0 |
| HvArm64RegisterQ1 | 0x00030001 | Q1 |
| HvArm64RegisterQ2 | 0x00030002 | Q2 |
| HvArm64RegisterQ3 | 0x00030003 | Q3 |
| HvArm64RegisterQ4 | 0x00030004 | Q4 |
| HvArm64RegisterQ5 | 0x00030005 | Q5 |
| HvArm64RegisterQ6 | 0x00030006 | Q6 |
| HvArm64RegisterQ7 | 0x00030007 | Q7 |
| HvArm64RegisterQ8 | 0x00030008 | Q8 |
| HvArm64RegisterQ9 | 0x00030009 | Q9 |
| HvArm64RegisterQ10 | 0x0003000A | Q10 |
| HvArm64RegisterQ11 | 0x0003000B | Q11 |
| HvArm64RegisterQ12 | 0x0003000C | Q12 |
| HvArm64RegisterQ13 | 0x0003000D | Q13 |
| HvArm64RegisterQ14 | 0x0003000E | Q14 |
| HvArm64RegisterQ15 | 0x0003000F | Q15 |
| HvArm64RegisterQ16 | 0x00030010 | Q16 |
| HvArm64RegisterQ17 | 0x00030011 | Q17 |
| HvArm64RegisterQ18 | 0x00030012 | Q18 |
| HvArm64RegisterQ19 | 0x00030013 | Q19 |
| HvArm64RegisterQ20 | 0x00030014 | Q20 |
| HvArm64RegisterQ21 | 0x00030015 | Q21 |
| HvArm64RegisterQ22 | 0x00030016 | Q22 |
| HvArm64RegisterQ23 | 0x00030017 | Q23 |
| HvArm64RegisterQ24 | 0x00030018 | Q24 |
| HvArm64RegisterQ25 | 0x00030019 | Q25 |
| HvArm64RegisterQ26 | 0x0003001A | Q26 |
| HvArm64RegisterQ27 | 0x0003001B | Q27 |
| HvArm64RegisterQ28 | 0x0003001C | Q28 |
| HvArm64RegisterQ29 | 0x0003001D | Q29 |
| HvArm64RegisterQ30 | 0x0003001E | Q30 |
| HvArm64RegisterQ31 | 0x0003001F | Q31 |
| HvArm64RegisterZ0 | 0x00030100 | Z0 |
| HvArm64RegisterZ1 | 0x00030101 | Z1 |
| HvArm64RegisterZ2 | 0x00030102 | Z2 |
| HvArm64RegisterZ3 | 0x00030103 | Z3 |
| HvArm64RegisterZ4 | 0x00030104 | Z4 |
| HvArm64RegisterZ5 | 0x00030105 | Z5 |
| HvArm64RegisterZ6 | 0x00030106 | Z6 |
| HvArm64RegisterZ7 | 0x00030107 | Z7 |
| HvArm64RegisterZ8 | 0x00030108 | Z8 |
| HvArm64RegisterZ9 | 0x00030109 | Z9 |
| HvArm64RegisterZ10 | 0x0003010A | Z10 |
| HvArm64RegisterZ11 | 0x0003010B | Z11 |
| HvArm64RegisterZ12 | 0x0003010C | Z12 |
| HvArm64RegisterZ13 | 0x0003010D | Z13 |
| HvArm64RegisterZ14 | 0x0003010E | Z14 |
| HvArm64RegisterZ15 | 0x0003010F | Z15 |
| HvArm64RegisterZ16 | 0x00030110 | Z16 |
| HvArm64RegisterZ17 | 0x00030111 | Z17 |
| HvArm64RegisterZ18 | 0x00030112 | Z18 |
| HvArm64RegisterZ19 | 0x00030113 | Z19 |
| HvArm64RegisterZ20 | 0x00030114 | Z20 |
| HvArm64RegisterZ21 | 0x00030115 | Z21 |
| HvArm64RegisterZ22 | 0x00030116 | Z22 |
| HvArm64RegisterZ23 | 0x00030117 | Z23 |
| HvArm64RegisterZ24 | 0x00030118 | Z24 |
| HvArm64RegisterZ25 | 0x00030119 | Z25 |
| HvArm64RegisterZ26 | 0x0003011A | Z26 |
| HvArm64RegisterZ27 | 0x0003011B | Z27 |
| HvArm64RegisterZ28 | 0x0003011C | Z28 |
| HvArm64RegisterZ29 | 0x0003011D | Z29 |
| HvArm64RegisterZ30 | 0x0003011E | Z30 |
| HvArm64RegisterZ31 | 0x0003011F | Z31 |
| HvArm64RegisterP0 | 0x00030120 | P0 |
| HvArm64RegisterP1 | 0x00030121 | P1 |
| HvArm64RegisterP2 | 0x00030122 | P2 |
| HvArm64RegisterP3 | 0x00030123 | P3 |
| HvArm64RegisterP4 | 0x00030124 | P4 |
| HvArm64RegisterP5 | 0x00030125 | P5 |
| HvArm64RegisterP6 | 0x00030126 | P6 |
| HvArm64RegisterP7 | 0x00030127 | P7 |
| HvArm64RegisterP8 | 0x00030128 | P8 |
| HvArm64RegisterP9 | 0x00030129 | P9 |
| HvArm64RegisterP10 | 0x0003012A | P10 |
| HvArm64RegisterP11 | 0x0003012B | P11 |
| HvArm64RegisterP12 | 0x0003012C | P12 |
| HvArm64RegisterP13 | 0x0003012D | P13 |
| HvArm64RegisterP14 | 0x0003012E | P14 |
| HvArm64RegisterP15 | 0x0003012F | P15 |
| HvArm64RegisterFFR | 0x00030130 | SVE first-fault predicate |
Special Purpose / Status
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterCurrentEl | 0x00021003 | Current EL |
| HvArm64RegisterDaif | 0x00021004 | Interrupt mask bits |
| HvArm64RegisterDit | 0x00021005 | Data independent timing |
| HvArm64RegisterPstate | 0x00020023 | PSTATE (Deprecated) |
| HvArm64RegisterElrEl1 | 0x00040015 | ELR_EL1 (Deprecated) |
| HvArm64RegisterElrElx | 0x0002100C | Current EL return address |
| HvArm64RegisterFpcr | 0x00040012 | FPCR (Deprecated) |
| HvArm64RegisterFpsr | 0x00040013 | FPSR (Deprecated) |
| HvArm64RegisterNzcv | 0x00021006 | NZCV flags |
| HvArm64RegisterPan | 0x00021007 | PAN state |
| HvArm64RegisterSpSel | 0x00021008 | SP selection |
| HvArm64RegisterSpsrEl1 | 0x00040014 | SPSR_EL1 (Deprecated) |
| HvArm64RegisterSpsrElx | 0x0002100D | Current EL SPSR |
| HvArm64RegisterSsbs | 0x00021009 | Speculative store bypass safe |
| HvArm64RegisterTco | 0x0002100A | Tag check override |
| HvArm64RegisterUao | 0x0002100B | User access override |
ID Registers
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterIdMidrEl1 | 0x00022000 | Main ID |
| HvArm64RegisterIdMpidrEl1 | 0x00022005 | Multiprocessor Affinity |
| HvArm64RegisterIdAa64Pfr0El1 | 0x00022020 | AArch64 feature 0 |
| HvArm64RegisterIdAa64Pfr1El1 | 0x00022021 | AArch64 feature 1 |
| HvArm64RegisterIdAa64Pfr2El1 | 0x00022022 | AArch64 feature 2 |
| HvArm64RegisterIdAa64Zfr0El1 | 0x00022024 | SVE feature 0 |
| HvArm64RegisterIdAa64Smfr0El1 | 0x00022025 | SME feature 0 |
| HvArm64RegisterIdAa64Dfr0El1 | 0x00022028 | Debug feature 0 |
| HvArm64RegisterIdAa64Isar0El1 | 0x00022030 | ISA attribute 0 |
| HvArm64RegisterIdAa64Mmfr0El1 | 0x00022038 | Memory model feature 0 |
| HvArm64RegisterIdAa64Mmfr1El1 | 0x00022039 | Memory model feature 1 |
| HvArm64RegisterIdAa64Mmfr2El1 | 0x0002203A | Memory model feature 2 |
| HvArm64RegisterIdAa64Mmfr3El1 | 0x0002203B | Memory model feature 3 |
| HvArm64RegisterIdAa64Mmfr4El1 | 0x0002203C | Memory model feature 4 |
General System Control Registers
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterAccdataEl1 | 0x00040020 | ACCDATA |
| HvArm64RegisterActlrEl1 | 0x00040003 | ACTLR_EL1 |
| HvArm64RegisterAfsr0El1 | 0x00040016 | Asynchronous fault status 0 (EL1) |
| HvArm64RegisterAfsr0Elx | 0x00040073 | Asynchronous fault status 0 (ELx combined) |
| HvArm64RegisterAfsr1Elx | 0x00040074 | Asynchronous fault status 1 (ELx combined) |
| HvArm64RegisterAidrEl1 | 0x00040024 | Auxiliary ID |
| HvArm64RegisterAmairEl1 | 0x00040018 | Memory attribute indirection (EL1) |
| HvArm64RegisterAmairElx | 0x00040075 | Memory attribute indirection (ELx combined) |
| HvArm64RegisterApdAKeyHiEl1 | 0x00040026 | APDAKeyHi_EL1 |
| HvArm64RegisterApdAKeyLoEl1 | 0x00040027 | APDAKeyLo_EL1 |
| HvArm64RegisterApdBKeyHiEl1 | 0x00040028 | APDBKeyHi_EL1 |
| HvArm64RegisterApdBKeyLoEl1 | 0x00040029 | APDBKeyLo_EL1 |
| HvArm64RegisterApgAKeyHiEl1 | 0x0004002A | APGAKeyHi_EL1 |
| HvArm64RegisterApgAKeyLoEl1 | 0x0004002B | APGAKeyLo_EL1 |
| HvArm64RegisterApiAKeyHiEl1 | 0x0004002C | APIAKeyHi_EL1 |
| HvArm64RegisterApiAKeyLoEl1 | 0x0004002D | APIAKeyLo_EL1 |
| HvArm64RegisterApiBKeyHiEl1 | 0x0004002E | APIBKeyHi_EL1 |
| HvArm64RegisterApiBKeyLoEl1 | 0x0004002F | APIBKeyLo_EL1 |
| HvArm64RegisterCcsidrEl1 / Ccsidr2El1 | 0x00040030 /0x00040031 | Cache size ID |
| HvArm64RegisterClidrEl1 | 0x00040032 | Cache level ID |
| HvArm64RegisterContextidrEl1 | 0x0004000D | Context ID (EL1) |
| HvArm64RegisterContextidrElx | 0x00040076 | Context ID (ELx combined) |
| HvArm64RegisterCpacrEl1 | 0x00040004 | Coprocessor access (CPACR_EL1) |
| HvArm64RegisterCpacrElx | 0x00040077 | Coprocessor access (ELx combined) |
| HvArm64RegisterCsselrEl1 | 0x00040035 | Cache size selection |
| HvArm64RegisterCtrEl0 | 0x00040036 | Cache type |
| HvArm64RegisterDczidEl0 | 0x00040038 | DC ZVA parameters |
| HvArm64RegisterEsrEl1 | 0x00040008 | Exception syndrome (EL1) |
| HvArm64RegisterEsrElx | 0x00040078 | Exception syndrome (ELx combined) |
| HvArm64RegisterFarEl1 | 0x00040009 | Fault address (EL1) |
| HvArm64RegisterFarElx | 0x00040079 | Fault address (ELx combined) |
| HvArm64RegisterGcrEl1 | 0x0004003C | Guarded control |
| HvArm64RegisterGmidEl1 | 0x0004003D | Guest memory ID |
| HvArm64RegisterIsrEl1 | 0x0004004A | Interrupt status |
| HvArm64RegisterLorcEl1 | 0x0004004B | LORegion control |
| HvArm64RegisterLoreaEl1 | 0x0004004C | LORegion end address |
| HvArm64RegisterLoridEl1 | 0x0004004D | LORegion ID |
| HvArm64RegisterLornEl1 | 0x0004004E | LORegion number |
| HvArm64RegisterLorsaEl1 | 0x0004004F | LORegion start address |
| HvArm64RegisterMairEl1 | 0x0004000B | Memory attribute indirection (EL1) |
| HvArm64RegisterMairElx | 0x0004007A | Memory attribute indirection (ELx combined) |
| HvArm64RegisterMidrEl1 | 0x00040051 | MIDR (Deprecated) |
| HvArm64RegisterMpidrEl1 | 0x00040001 | MPIDR (Deprecated) |
| HvArm64RegisterMvfr0El1 | 0x00040052 | Media & VFP features 0 |
| HvArm64RegisterMvfr1El1 | 0x00040053 | Media & VFP features 1 |
| HvArm64RegisterMvfr2El1 | 0x00040054 | Media & VFP features 2 |
| HvArm64RegisterParEl1 | 0x0004000A | Physical address register |
| HvArm64RegisterRevidrEl1 | 0x00040055 | Revision ID |
| HvArm64RegisterRgsrEl1 | 0x00040056 | Random number generator seed status |
| HvArm64RegisterRndr | 0x00040057 | Random number (RNDR) |
| HvArm64RegisterRndrrs | 0x00040058 | Random number reseeded (RNDRRS) |
| HvArm64RegisterSctlrEl1 | 0x00040002 | System control (EL1) |
| HvArm64RegisterSctlrElx | 0x0004007B | System control (ELx combined) |
| HvArm64RegisterScxtnumEl0 | 0x0004005A | Context number (EL0) |
| HvArm64RegisterScxtnumEl1 | 0x0004005B | Context number (EL1) |
| HvArm64RegisterSmcrEl1 | 0x0004005D | SME control (EL1) |
| HvArm64RegisterSmidrEl1 | 0x0004005F | SME ID |
| HvArm64RegisterSmpriEl1 | 0x00040060 | SME priority (EL1) |
| HvArm64RegisterTcrEl1 | 0x00040007 | Translation control (EL1) |
| HvArm64RegisterTcrElx | 0x0004007C | Translation control (ELx combined) |
| HvArm64RegisterTfsre0El1 | 0x00040063 | Fault status (TFSRE0_EL1) |
| HvArm64RegisterTfsrEl1 | 0x00040064 | Fault status (TFSR_EL1) |
| HvArm64RegisterTpidr2El0 | 0x00040066 | TPIDR2 |
| HvArm64RegisterTpidrEl0 | 0x00040011 | Thread pointer (EL0) |
| HvArm64RegisterTpidrEl1 | 0x0004000E | Thread pointer (EL1) |
| HvArm64RegisterTpidrroEl0 | 0x00040010 | Read-only thread pointer |
| HvArm64RegisterTtbr0El1 | 0x00040005 | Translation table base 0 (EL1) |
| HvArm64RegisterTtbr0Elx | 0x0004007D | Translation table base 0 (ELx combined) |
| HvArm64RegisterTtbr1El1 | 0x00040006 | Translation table base 1 (EL1) |
| HvArm64RegisterTtbr1Elx | 0x0004007F | Translation table base 1 (ELx combined) |
| HvArm64RegisterVbarEl1 | 0x0004000C | Vector base (EL1) |
| HvArm64RegisterVbarElx | 0x00040080 | Vector base (ELx combined) |
| HvArm64RegisterZcrEl1 | 0x00040071 | SVE vector length control (EL1) |
| HvArm64RegisterZcrElx | 0x00040081 | SVE vector length control (ELx combined) |
Debug Registers
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterDbgauthstatusEl1 | 0x00050040 | Debug auth status |
| HvArm64RegisterDbgbcr0El1 | 0x00050000 | Breakpoint control 0 |
| HvArm64RegisterDbgbcr1El1 | 0x00050001 | Breakpoint control 1 |
| HvArm64RegisterDbgbcr2El1 | 0x00050002 | Breakpoint control 2 |
| HvArm64RegisterDbgbcr3El1 | 0x00050003 | Breakpoint control 3 |
| HvArm64RegisterDbgbcr4El1 | 0x00050004 | Breakpoint control 4 |
| HvArm64RegisterDbgbcr5El1 | 0x00050005 | Breakpoint control 5 |
| HvArm64RegisterDbgbcr6El1 | 0x00050006 | Breakpoint control 6 |
| HvArm64RegisterDbgbcr7El1 | 0x00050007 | Breakpoint control 7 |
| HvArm64RegisterDbgbcr8El1 | 0x00050008 | Breakpoint control 8 |
| HvArm64RegisterDbgbcr9El1 | 0x00050009 | Breakpoint control 9 |
| HvArm64RegisterDbgbcr10El1 | 0x0005000A | Breakpoint control 10 |
| HvArm64RegisterDbgbcr11El1 | 0x0005000B | Breakpoint control 11 |
| HvArm64RegisterDbgbcr12El1 | 0x0005000C | Breakpoint control 12 |
| HvArm64RegisterDbgbcr13El1 | 0x0005000D | Breakpoint control 13 |
| HvArm64RegisterDbgbcr14El1 | 0x0005000E | Breakpoint control 14 |
| HvArm64RegisterDbgbcr15El1 | 0x0005000F | Breakpoint control 15 |
| HvArm64RegisterDbgbvr0El1 | 0x00050020 | Breakpoint value 0 |
| HvArm64RegisterDbgbvr1El1 | 0x00050021 | Breakpoint value 1 |
| HvArm64RegisterDbgbvr2El1 | 0x00050022 | Breakpoint value 2 |
| HvArm64RegisterDbgbvr3El1 | 0x00050023 | Breakpoint value 3 |
| HvArm64RegisterDbgbvr4El1 | 0x00050024 | Breakpoint value 4 |
| HvArm64RegisterDbgbvr5El1 | 0x00050025 | Breakpoint value 5 |
| HvArm64RegisterDbgbvr6El1 | 0x00050026 | Breakpoint value 6 |
| HvArm64RegisterDbgbvr7El1 | 0x00050027 | Breakpoint value 7 |
| HvArm64RegisterDbgbvr8El1 | 0x00050028 | Breakpoint value 8 |
| HvArm64RegisterDbgbvr9El1 | 0x00050029 | Breakpoint value 9 |
| HvArm64RegisterDbgbvr10El1 | 0x0005002A | Breakpoint value 10 |
| HvArm64RegisterDbgbvr11El1 | 0x0005002B | Breakpoint value 11 |
| HvArm64RegisterDbgbvr12El1 | 0x0005002C | Breakpoint value 12 |
| HvArm64RegisterDbgbvr13El1 | 0x0005002D | Breakpoint value 13 |
| HvArm64RegisterDbgbvr14El1 | 0x0005002E | Breakpoint value 14 |
| HvArm64RegisterDbgbvr15El1 | 0x0005002F | Breakpoint value 15 |
| HvArm64RegisterDbgclaimclrEl1 | 0x00050041 | Claim tag clear |
| HvArm64RegisterDbgclaimsetEl1 | 0x00050042 | Claim tag set |
| HvArm64RegisterDbgdtrrxEl0 | 0x00050043 | Debug data transfer receive |
| HvArm64RegisterDbgdtrtxEl0 | 0x00050044 | Debug data transfer transmit |
| HvArm64RegisterDbgprcrEl1 | 0x00050045 | External debug power/priv control |
| HvArm64RegisterDbgwcr0El1 | 0x00050010 | Watchpoint control 0 |
| HvArm64RegisterDbgwcr1El1 | 0x00050011 | Watchpoint control 1 |
| HvArm64RegisterDbgwcr2El1 | 0x00050012 | Watchpoint control 2 |
| HvArm64RegisterDbgwcr3El1 | 0x00050013 | Watchpoint control 3 |
| HvArm64RegisterDbgwcr4El1 | 0x00050014 | Watchpoint control 4 |
| HvArm64RegisterDbgwcr5El1 | 0x00050015 | Watchpoint control 5 |
| HvArm64RegisterDbgwcr6El1 | 0x00050016 | Watchpoint control 6 |
| HvArm64RegisterDbgwcr7El1 | 0x00050017 | Watchpoint control 7 |
| HvArm64RegisterDbgwcr8El1 | 0x00050018 | Watchpoint control 8 |
| HvArm64RegisterDbgwcr9El1 | 0x00050019 | Watchpoint control 9 |
| HvArm64RegisterDbgwcr10El1 | 0x0005001A | Watchpoint control 10 |
| HvArm64RegisterDbgwcr11El1 | 0x0005001B | Watchpoint control 11 |
| HvArm64RegisterDbgwcr12El1 | 0x0005001C | Watchpoint control 12 |
| HvArm64RegisterDbgwcr13El1 | 0x0005001D | Watchpoint control 13 |
| HvArm64RegisterDbgwcr14El1 | 0x0005001E | Watchpoint control 14 |
| HvArm64RegisterDbgwcr15El1 | 0x0005001F | Watchpoint control 15 |
| HvArm64RegisterDbgwvr0El1 | 0x00050030 | Watchpoint value 0 |
| HvArm64RegisterDbgwvr1El1 | 0x00050031 | Watchpoint value 1 |
| HvArm64RegisterDbgwvr2El1 | 0x00050032 | Watchpoint value 2 |
| HvArm64RegisterDbgwvr3El1 | 0x00050033 | Watchpoint value 3 |
| HvArm64RegisterDbgwvr4El1 | 0x00050034 | Watchpoint value 4 |
| HvArm64RegisterDbgwvr5El1 | 0x00050035 | Watchpoint value 5 |
| HvArm64RegisterDbgwvr6El1 | 0x00050036 | Watchpoint value 6 |
| HvArm64RegisterDbgwvr7El1 | 0x00050037 | Watchpoint value 7 |
| HvArm64RegisterDbgwvr8El1 | 0x00050038 | Watchpoint value 8 |
| HvArm64RegisterDbgwvr9El1 | 0x00050039 | Watchpoint value 9 |
| HvArm64RegisterDbgwvr10El1 | 0x0005003A | Watchpoint value 10 |
| HvArm64RegisterDbgwvr11El1 | 0x0005003B | Watchpoint value 11 |
| HvArm64RegisterDbgwvr12El1 | 0x0005003C | Watchpoint value 12 |
| HvArm64RegisterDbgwvr13El1 | 0x0005003D | Watchpoint value 13 |
| HvArm64RegisterDbgwvr14El1 | 0x0005003E | Watchpoint value 14 |
| HvArm64RegisterDbgwvr15El1 | 0x0005003F | Watchpoint value 15 |
| HvArm64RegisterDlrEl0 | 0x00050047 | Debug link register |
| HvArm64RegisterDspsrEl0 | 0x00050048 | Debug saved PSR |
| HvArm64RegisterMdccintEl1 | 0x00050049 | Monitor debug comms channel int |
| HvArm64RegisterMdccsrEl0 | 0x0005004A | Monitor debug comms channel status |
| HvArm64RegisterMdrarEl1 | 0x0005004C | Monitor debug ROM addr |
| HvArm64RegisterMdscrEl1 | 0x0005004D | Monitor debug system control |
| HvArm64RegisterOsdlrEl1 | 0x0005004E | OS double lock |
| HvArm64RegisterOsdtrrxEl1 | 0x0005004F | OS data transfer receive |
| HvArm64RegisterOsdtrtxEl1 | 0x00050050 | OS data transfer transmit |
| HvArm64RegisterOseccrEl1 | 0x00050051 | OS external debug context |
| HvArm64RegisterOslarEl1 | 0x00050052 | OS lock access |
| HvArm64RegisterOslsrEl1 | 0x00050053 | OS lock status |
| HvArm64RegisterTrfcrEl1 | 0x00050055 | Trace filter control (EL1) |
| HvArm64RegisterTrfcrElx | 0x00050057 | Trace filter control (ELx combined) |
Performance Monitors & Activity Monitors
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterPmccfiltrEl0 | 0x00052000 | PMU cycle counter filter |
| HvArm64RegisterPmccntrEl0 | 0x00052001 | Cycle counter |
| HvArm64RegisterPmceid0El0 | 0x00052002 | Event ID 0 |
| HvArm64RegisterPmceid1El0 | 0x00052003 | Event ID 1 |
| HvArm64RegisterPmcntenclrEl0 | 0x00052004 | Counter enable clear |
| HvArm64RegisterPmcntensetEl0 | 0x00052005 | Counter enable set |
| HvArm64RegisterPmcrEl0 | 0x00052006 | PMU control |
| HvArm64RegisterPmevcntr0El0 | 0x00052007 | Event counter 0 |
| HvArm64RegisterPmevcntr1El0 | 0x00052008 | Event counter 1 |
| HvArm64RegisterPmevcntr2El0 | 0x00052009 | Event counter 2 |
| HvArm64RegisterPmevcntr3El0 | 0x0005200A | Event counter 3 |
| HvArm64RegisterPmevcntr4El0 | 0x0005200B | Event counter 4 |
| HvArm64RegisterPmevcntr5El0 | 0x0005200C | Event counter 5 |
| HvArm64RegisterPmevcntr6El0 | 0x0005200D | Event counter 6 |
| HvArm64RegisterPmevcntr7El0 | 0x0005200E | Event counter 7 |
| HvArm64RegisterPmevcntr8El0 | 0x0005200F | Event counter 8 |
| HvArm64RegisterPmevcntr9El0 | 0x00052010 | Event counter 9 |
| HvArm64RegisterPmevcntr10El0 | 0x00052011 | Event counter 10 |
| HvArm64RegisterPmevcntr11El0 | 0x00052012 | Event counter 11 |
| HvArm64RegisterPmevcntr12El0 | 0x00052013 | Event counter 12 |
| HvArm64RegisterPmevcntr13El0 | 0x00052014 | Event counter 13 |
| HvArm64RegisterPmevcntr14El0 | 0x00052015 | Event counter 14 |
| HvArm64RegisterPmevcntr15El0 | 0x00052016 | Event counter 15 |
| HvArm64RegisterPmevcntr16El0 | 0x00052017 | Event counter 16 |
| HvArm64RegisterPmevcntr17El0 | 0x00052018 | Event counter 17 |
| HvArm64RegisterPmevcntr18El0 | 0x00052019 | Event counter 18 |
| HvArm64RegisterPmevcntr19El0 | 0x0005201A | Event counter 19 |
| HvArm64RegisterPmevcntr20El0 | 0x0005201B | Event counter 20 |
| HvArm64RegisterPmevcntr21El0 | 0x0005201C | Event counter 21 |
| HvArm64RegisterPmevcntr22El0 | 0x0005201D | Event counter 22 |
| HvArm64RegisterPmevcntr23El0 | 0x0005201E | Event counter 23 |
| HvArm64RegisterPmevcntr24El0 | 0x0005201F | Event counter 24 |
| HvArm64RegisterPmevcntr25El0 | 0x00052020 | Event counter 25 |
| HvArm64RegisterPmevcntr26El0 | 0x00052021 | Event counter 26 |
| HvArm64RegisterPmevcntr27El0 | 0x00052022 | Event counter 27 |
| HvArm64RegisterPmevcntr28El0 | 0x00052023 | Event counter 28 |
| HvArm64RegisterPmevcntr29El0 | 0x00052024 | Event counter 29 |
| HvArm64RegisterPmevcntr30El0 | 0x00052025 | Event counter 30 |
| HvArm64RegisterPmevtyper0El0 | 0x00052026 | Event type 0 |
| HvArm64RegisterPmevtyper1El0 | 0x00052027 | Event type 1 |
| HvArm64RegisterPmevtyper2El0 | 0x00052028 | Event type 2 |
| HvArm64RegisterPmevtyper3El0 | 0x00052029 | Event type 3 |
| HvArm64RegisterPmevtyper4El0 | 0x0005202A | Event type 4 |
| HvArm64RegisterPmevtyper5El0 | 0x0005202B | Event type 5 |
| HvArm64RegisterPmevtyper6El0 | 0x0005202C | Event type 6 |
| HvArm64RegisterPmevtyper7El0 | 0x0005202D | Event type 7 |
| HvArm64RegisterPmevtyper8El0 | 0x0005202E | Event type 8 |
| HvArm64RegisterPmevtyper9El0 | 0x0005202F | Event type 9 |
| HvArm64RegisterPmevtyper10El0 | 0x00052030 | Event type 10 |
| HvArm64RegisterPmevtyper11El0 | 0x00052031 | Event type 11 |
| HvArm64RegisterPmevtyper12El0 | 0x00052032 | Event type 12 |
| HvArm64RegisterPmevtyper13El0 | 0x00052033 | Event type 13 |
| HvArm64RegisterPmevtyper14El0 | 0x00052034 | Event type 14 |
| HvArm64RegisterPmevtyper15El0 | 0x00052035 | Event type 15 |
| HvArm64RegisterPmevtyper16El0 | 0x00052036 | Event type 16 |
| HvArm64RegisterPmevtyper17El0 | 0x00052037 | Event type 17 |
| HvArm64RegisterPmevtyper18El0 | 0x00052038 | Event type 18 |
| HvArm64RegisterPmevtyper19El0 | 0x00052039 | Event type 19 |
| HvArm64RegisterPmevtyper20El0 | 0x0005203A | Event type 20 |
| HvArm64RegisterPmevtyper21El0 | 0x0005203B | Event type 21 |
| HvArm64RegisterPmevtyper22El0 | 0x0005203C | Event type 22 |
| HvArm64RegisterPmevtyper23El0 | 0x0005203D | Event type 23 |
| HvArm64RegisterPmevtyper24El0 | 0x0005203E | Event type 24 |
| HvArm64RegisterPmevtyper25El0 | 0x0005203F | Event type 25 |
| HvArm64RegisterPmevtyper26El0 | 0x00052040 | Event type 26 |
| HvArm64RegisterPmevtyper27El0 | 0x00052041 | Event type 27 |
| HvArm64RegisterPmevtyper28El0 | 0x00052042 | Event type 28 |
| HvArm64RegisterPmevtyper29El0 | 0x00052043 | Event type 29 |
| HvArm64RegisterPmevtyper30El0 | 0x00052044 | Event type 30 |
| HvArm64RegisterPmintenclrEl1 | 0x00052045 | Interrupt enable clear |
| HvArm64RegisterPmintensetEl1 | 0x00052046 | Interrupt enable set |
| HvArm64RegisterPmovsclrEl0 | 0x00052048 | Overflow status clear |
| HvArm64RegisterPmovssetEl0 | 0x00052049 | Overflow status set |
| HvArm64RegisterPmselrEl0 | 0x0005204A | Event counter select |
| HvArm64RegisterPmuserenrEl0 | 0x0005204C | User enable |
| HvArm64RegisterPmxevcntrEl0 | 0x0005204D | Selected event counter |
| HvArm64RegisterPmxevtyperEl0 | 0x0005204E | Selected event type |
| HvArm64RegisterAmevcntr00El0 | 0x00053000 | Activity monitor counter 00 |
| HvArm64RegisterAmevcntr01El0 | 0x00053001 | Activity monitor counter 01 |
| HvArm64RegisterAmevcntr02El0 | 0x00053002 | Activity monitor counter 02 |
| HvArm64RegisterAmevcntr03El0 | 0x00053003 | Activity monitor counter 03 |
Statistical Profiling Extension (SPE)
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterPmbidrEl1 | 0x00054000 | SPE buffer ID |
| HvArm64RegisterPmblimitrEl1 | 0x00054001 | SPE buffer limit |
| HvArm64RegisterPmbptrEl1 | 0x00054002 | SPE buffer write pointer |
| HvArm64RegisterPmbsrEl1 | 0x00054003 | SPE status |
| HvArm64RegisterPmscrEl1 | 0x00054004 | SPE control EL1 |
| HvArm64RegisterPmsevfrEl1 | 0x00054006 | SPE exception filtering |
| HvArm64RegisterPmsfcrEl1 | 0x00054007 | SPE filter control |
| HvArm64RegisterPmsicrEl1 | 0x00054008 | SPE interrupt control |
| HvArm64RegisterPmsidrEl1 | 0x00054009 | SPE ID |
| HvArm64RegisterPmsirrEl1 | 0x0005400A | SPE interrupt status |
| HvArm64RegisterPmslatfrEl1 | 0x0005400B | SPE latency filtering |
| HvArm64RegisterPmsnevfrEl1 | 0x0005400C | SPE negative event filtering |
RAS Registers
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterDisrEl1 | 0x00056000 | RAS status |
| HvArm64RegisterErrselrEl1 | 0x00056002 | Error select |
| HvArm64RegisterErxaddrEl1 | 0x00056003 | Error record address |
| HvArm64RegisterErxctlrEl1 | 0x00056004 | Error control |
| HvArm64RegisterErrxfrEl1 | 0x00056005 | Error guest address |
| HvArm64RegisterErxmisc0El1 | 0x00056006 | Error record misc 0 |
| HvArm64RegisterErxmisc1El1 | 0x00056007 | Error record misc 1 |
| HvArm64RegisterErxmisc2El1 | 0x00056008 | Error record misc 2 |
| HvArm64RegisterErxmisc3El1 | 0x00056009 | Error record misc 3 |
| HvArm64RegisterErxpfgcdnEl1 | 0x0005600A | Pseudo-fault gen code low |
| HvArm64RegisterErxpfgctlEl1 | 0x0005600B | Pseudo-fault generation control |
| HvArm64RegisterErxpfgfEl1 | 0x0005600C | Pseudo-fault generation feature/status |
| HvArm64RegisterErxstatusEl1 | 0x0005600D | Error record status |
Generic Timer
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterCntfrqEl0 | 0x00058000 | Counter frequency |
| HvArm64RegisterCntkctlEl1 | 0x00058008 | Kernel timer control |
| HvArm64RegisterCntkctlElx | 0x00058013 | CntkctlEl1 or CnthctlEl2 depending on EL. |
| HvArm64RegisterCntpCtlEl0 | 0x00058009 | Physical timer control |
| HvArm64RegisterCntpCtlElx | 0x00058014 | CntpCtlEl0 or CnthpCtlEl2 depending on EL. |
| HvArm64RegisterCntpCvalEl0 | 0x0005800A | Physical timer compare |
| HvArm64RegisterCntpCvalElx | 0x00058015 | CntpCvalEl0 or CnthpCvalEl2 depending on EL. |
| HvArm64RegisterCntpTvalEl0 | 0x0005800B | Physical timer value |
| HvArm64RegisterCntpTvalElx | 0x00058016 | CntpTvalEl0 or CnthpTvalEl2 depending on EL. |
| HvArm64RegisterCntpctEl0 | 0x0005800C | Physical counter |
| HvArm64RegisterCntvCtlEl0 | 0x0005800E | Virtual timer control |
| HvArm64RegisterCntvCtlElx | 0x00058017 | CntvCtlEl0 or CnthvCtlEl2 depending on EL. |
| HvArm64RegisterCntvCvalEl0 | 0x0005800F | Virtual timer compare |
| HvArm64RegisterCntvCvalElx | 0x00058018 | CntvCvalEl0 or CnthvCvalEl2 depending on EL. |
| HvArm64RegisterCntvTvalEl0 | 0x00058010 | Virtual timer value |
| HvArm64RegisterCntvTvalElx | 0x00058019 | CntvTvalEl0 or CnthvTvalEl2 depending on EL. |
| HvArm64RegisterCntvctEl0 | 0x00058011 | Virtual counter |
GIC System Registers (CPU Interface)
| Register | Identifier | Comment |
|---|---|---|
| Arm64RegisterIccAp1R0El1 | 0x00060000 | Active pri group1 reg0 |
| Arm64RegisterIccAp1R1El1 | 0x00060001 | Active pri group1 reg1 |
| Arm64RegisterIccAp1R2El1 | 0x00060002 | Active pri group1 reg2 |
| Arm64RegisterIccAp1R3El1 | 0x00060003 | Active pri group1 reg3 |
| Arm64RegisterIccAsgi1REl1 | 0x00060004 | SGI1R write alias |
| Arm64RegisterIccBpr1El1 | 0x00060005 | Binary point group1 |
| Arm64RegisterIccCtlrEl1 | 0x00060006 | CPU interface control |
| Arm64RegisterIccDirEl1 | 0x00060007 | Deactivate interrupt |
| Arm64RegisterIccEoir1El1 | 0x00060008 | End of interrupt group1 |
| Arm64RegisterIccHppir1El1 | 0x00060009 | Highest pending group1 |
| Arm64RegisterIccIar1El1 | 0x0006000A | Interrupt acknowledge g1 |
| Arm64RegisterIccIgrpen1El1 | 0x0006000B | Group1 enable |
| Arm64RegisterIccPmrEl1 | 0x0006000C | Priority mask |
| Arm64RegisterIccRprEl1 | 0x0006000D | Running priority |
| Arm64RegisterIccSgi1REl1 | 0x0006000E | SGI1R register access |
| Arm64RegisterIccSreEl1 | 0x0006000F | System reg enable EL1 |
GIC Redistributor
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterGicrBaseGpa | 0x00063000 | Redistributor base GPA |
Synthetic / Hypervisor Added
| Register | Identifier | Comment |
|---|---|---|
| HvArm64RegisterPartitionInfoPage | 0x00090015 | Partition info page GPA |