Back to Fex

FEXCore custom CPUID functions

docs/CPUID.md

latest1.5 KB
Original Source

FEXCore custom CPUID functions

4000_0000h - Hypervisor information function

4000_0001h - Hypervisor config function

Sub-Leaf 0: ECX == 0

  • EAX:
    • Bits EAX[3:0] - Host architecture
      • 0 - Unknown architecture
      • 1 - x86_64
      • 2 - AArch64
      • 3-15: Reserved
    • Bits EAX[15:4] - Reserved
    • Bits EAX[31:16] - Maximum subleaf input value for CPUID function 4000_0001h
  • EBX - Reserved - Read as zero
  • ECX - Reserved - Read as zero
  • EDX - Reserved - Read as zero

Sub-leaf 1: ECX == 1

  • FEX version string signature. First 16-bytes
  • memcpy eax:ebx:ecx:edx in to the first 16-bytes of a string.

Sub-leaf 2: ECX == 2

  • FEX version string signature. Second 16-bytes
  • memcpy eax:ebx:ecx:edx in to the second 16-bytes of a string.

Sub-Leaf 0000_0003 - FFFF_FFFF: Reserved

4000_0002h - 4000_000Fh

  • Reserved range
  • Returns zero until implemented

4000_0010h - 4FFF_FFFFh

  • Undefined
  • FEX-Emu will return zero until implemented