VirtualBox

Changeset 54674 in vbox


Ignore:
Timestamp:
Mar 6, 2015 6:02:31 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
98827
Message:

CPUM: Working on refactoring the guest CPUID handling.

Location:
trunk/src/VBox/VMM
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/CPUMAllMsrs.cpp

    r53467 r54674  
    55
    66/*
    7  * Copyright (C) 2013-2014 Oracle Corporation
     7 * Copyright (C) 2013-201 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    13281328    PVM             pVM          = pVCpu->CTX_SUFF(pVM);
    13291329    uint64_t const  uOldEfer     = pVCpu->cpum.s.Guest.msrEFER;
    1330     uint32_t const  fExtFeatures = pVM->cpum.s.aGuestCpuIdExt[0].eax >= 0x80000001
    1331                                  ? pVM->cpum.s.aGuestCpuIdExt[1].edx
     1330    uint32_t const  fExtFeatures = pVM->cpum.s.aGuestCpuIdPatmExt[0].eax >= 0x80000001
     1331                                 ? pVM->cpum.s.aGuestCpuIdPatmExt[1].edx
    13321332                                 : 0;
    13331333    uint64_t        fMask        = 0;
  • trunk/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp

    r53467 r54674  
    55
    66/*
    7  * Copyright (C) 2006-2014 Oracle Corporation
     7 * Copyright (C) 2006-2015 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    12121212
    12131213    PCCPUMCPUID pCpuId;
    1214     if (iLeaf < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdStd))
    1215         pCpuId = &pVM->cpum.s.aGuestCpuIdStd[iLeaf];
    1216     else if (iLeaf - UINT32_C(0x80000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdExt))
    1217         pCpuId = &pVM->cpum.s.aGuestCpuIdExt[iLeaf - UINT32_C(0x80000000)];
     1214    if (iLeaf < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmStd))
     1215        pCpuId = &pVM->cpum.s.aGuestCpuIdPatmStd[iLeaf];
     1216    else if (iLeaf - UINT32_C(0x80000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmExt))
     1217        pCpuId = &pVM->cpum.s.aGuestCpuIdPatmExt[iLeaf - UINT32_C(0x80000000)];
    12181218    else if (   iLeaf - UINT32_C(0x40000000) < 0x100   /** @todo Fix this later: Hyper-V says 0x400000FF is the last valid leaf. */
    1219              && (pVCpu->CTX_SUFF(pVM)->cpum.s.aGuestCpuIdStd[1].ecx & X86_CPUID_FEATURE_ECX_HVP)) /* Only report if HVP bit set. */
     1219             && (pVCpu->CTX_SUFF(pVM)->cpum.s.aGuestCpuIdPatmStd[1].ecx & X86_CPUID_FEATURE_ECX_HVP)) /* Only report if HVP bit set. */
    12201220    {
    12211221        PCPUMCPUIDLEAF pHyperLeaf = cpumCpuIdGetLeaf(pVM, iLeaf, 0 /* uSubLeaf */);
     
    12331233        return;
    12341234    }
    1235     else if (iLeaf - UINT32_C(0xc0000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdCentaur))
    1236         pCpuId = &pVM->cpum.s.aGuestCpuIdCentaur[iLeaf - UINT32_C(0xc0000000)];
     1235    else if (iLeaf - UINT32_C(0xc0000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmCentaur))
     1236        pCpuId = &pVM->cpum.s.aGuestCpuIdPatmCentaur[iLeaf - UINT32_C(0xc0000000)];
    12371237    else
    1238         pCpuId = &pVM->cpum.s.GuestCpuIdDef;
     1238        pCpuId = &pVM->cpum.s.GuestCpuIdPatmDef;
    12391239
    12401240    uint32_t cCurrentCacheIndex = *pEcx;
     
    13091309}
    13101310
    1311 /**
    1312  * Gets a number of standard CPUID leafs.
    1313  *
    1314  * @returns Number of leafs.
    1315  * @param   pVM         Pointer to the VM.
    1316  * @remark  Intended for PATM.
    1317  */
    1318 VMMDECL(uint32_t) CPUMGetGuestCpuIdStdMax(PVM pVM)
    1319 {
    1320     return RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdStd);
    1321 }
    1322 
    1323 
    1324 /**
    1325  * Gets a number of extended CPUID leafs.
    1326  *
    1327  * @returns Number of leafs.
    1328  * @param   pVM         Pointer to the VM.
    1329  * @remark  Intended for PATM.
    1330  */
    1331 VMMDECL(uint32_t) CPUMGetGuestCpuIdExtMax(PVM pVM)
    1332 {
    1333     return RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdExt);
    1334 }
    1335 
    1336 
    1337 /**
    1338  * Gets a number of centaur CPUID leafs.
    1339  *
    1340  * @returns Number of leafs.
    1341  * @param   pVM         Pointer to the VM.
    1342  * @remark  Intended for PATM.
    1343  */
    1344 VMMDECL(uint32_t) CPUMGetGuestCpuIdCentaurMax(PVM pVM)
    1345 {
    1346     return RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdCentaur);
    1347 }
    1348 
    13491311
    13501312/**
     
    13661328            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    13671329            if (pLeaf)
    1368                 pVM->cpum.s.aGuestCpuIdStd[1].edx = pLeaf->uEdx |= X86_CPUID_FEATURE_EDX_APIC;
     1330                pVM->cpum.s.aGuestCpuIdPatmStd[1].edx = pLeaf->uEdx |= X86_CPUID_FEATURE_EDX_APIC;
    13691331
    13701332            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001), 0);
    13711333            if (   pLeaf
    13721334                && pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_AMD)
    1373                 pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx |= X86_CPUID_AMD_FEATURE_EDX_APIC;
     1335                pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx |= X86_CPUID_AMD_FEATURE_EDX_APIC;
    13741336
    13751337            pVM->cpum.s.GuestFeatures.fApic = 1;
     
    13831345            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    13841346            if (pLeaf)
    1385                 pVM->cpum.s.aGuestCpuIdStd[1].ecx = pLeaf->uEcx |= X86_CPUID_FEATURE_ECX_X2APIC;
     1347                pVM->cpum.s.aGuestCpuIdPatmStd[1].ecx = pLeaf->uEcx |= X86_CPUID_FEATURE_ECX_X2APIC;
    13861348            pVM->cpum.s.GuestFeatures.fX2Apic = 1;
    13871349            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled x2APIC\n"));
     
    14011363            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    14021364            if (pLeaf)
    1403                 pVM->cpum.s.aGuestCpuIdStd[1].edx = pLeaf->uEdx |= X86_CPUID_FEATURE_EDX_SEP;
     1365                pVM->cpum.s.aGuestCpuIdPatmStd[1].edx = pLeaf->uEdx |= X86_CPUID_FEATURE_EDX_SEP;
    14041366            pVM->cpum.s.GuestFeatures.fSysEnter = 1;
    14051367            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled SYSENTER/EXIT\n"));
     
    14281390
    14291391            /* Valid for both Intel and AMD CPUs, although only in 64 bits mode for Intel. */
    1430             pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx |= X86_CPUID_EXT_FEATURE_EDX_SYSCALL;
     1392            pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx |= X86_CPUID_EXT_FEATURE_EDX_SYSCALL;
    14311393            pVM->cpum.s.GuestFeatures.fSysCall = 1;
    14321394            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled SYSCALL/RET\n"));
     
    14461408            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    14471409            if (pLeaf)
    1448                 pVM->cpum.s.aGuestCpuIdStd[1].edx = pLeaf->uEdx |= X86_CPUID_FEATURE_EDX_PAE;
     1410                pVM->cpum.s.aGuestCpuIdPatmStd[1].edx = pLeaf->uEdx |= X86_CPUID_FEATURE_EDX_PAE;
    14491411
    14501412            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001), 0);
    14511413            if (    pLeaf
    14521414                &&  pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_AMD)
    1453                 pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx |= X86_CPUID_AMD_FEATURE_EDX_PAE;
     1415                pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx |= X86_CPUID_AMD_FEATURE_EDX_PAE;
    14541416
    14551417            pVM->cpum.s.GuestFeatures.fPae = 1;
     
    14711433
    14721434            /* Valid for both Intel and AMD. */
    1473             pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx |= X86_CPUID_EXT_FEATURE_EDX_LONG_MODE;
     1435            pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx |= X86_CPUID_EXT_FEATURE_EDX_LONG_MODE;
    14741436            pVM->cpum.s.GuestFeatures.fLongMode = 1;
    14751437            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled LONG MODE\n"));
     
    14901452
    14911453            /* Valid for both Intel and AMD. */
    1492             pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx |= X86_CPUID_EXT_FEATURE_EDX_NX;
     1454            pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx |= X86_CPUID_EXT_FEATURE_EDX_NX;
    14931455            pVM->cpum.s.GuestFeatures.fNoExecute = 1;
    14941456            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled NX\n"));
     
    15101472
    15111473            /* Valid for both Intel and AMD. */
    1512             pVM->cpum.s.aGuestCpuIdExt[1].ecx = pLeaf->uEcx |= X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF;
     1474            pVM->cpum.s.aGuestCpuIdPatmExt[1].ecx = pLeaf->uEcx |= X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF;
    15131475            pVM->cpum.s.GuestFeatures.fLahfSahf = 1;
    15141476            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled LAHF/SAHF\n"));
     
    15231485            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    15241486            if (pLeaf)
    1525                 pVM->cpum.s.aGuestCpuIdStd[1].edx = pLeaf->uEdx |= X86_CPUID_FEATURE_EDX_PAT;
     1487                pVM->cpum.s.aGuestCpuIdPatmStd[1].edx = pLeaf->uEdx |= X86_CPUID_FEATURE_EDX_PAT;
    15261488
    15271489            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001), 0);
    15281490            if (   pLeaf
    15291491                && pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_AMD)
    1530                 pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx |= X86_CPUID_AMD_FEATURE_EDX_PAT;
     1492                pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx |= X86_CPUID_AMD_FEATURE_EDX_PAT;
    15311493
    15321494            pVM->cpum.s.GuestFeatures.fPat = 1;
     
    15501512
    15511513            /* Valid for both Intel and AMD. */
    1552             pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx |= X86_CPUID_EXT_FEATURE_EDX_RDTSCP;
     1514            pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx |= X86_CPUID_EXT_FEATURE_EDX_RDTSCP;
    15531515            pVM->cpum.s.HostFeatures.fRdTscP = 1;
    15541516            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled RDTSCP.\n"));
     
    15611523            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    15621524            if (pLeaf)
    1563                 pVM->cpum.s.aGuestCpuIdStd[1].ecx = pLeaf->uEcx |= X86_CPUID_FEATURE_ECX_HVP;
     1525                pVM->cpum.s.aGuestCpuIdPatmStd[1].ecx = pLeaf->uEcx |= X86_CPUID_FEATURE_ECX_HVP;
    15641526            pVM->cpum.s.GuestFeatures.fHypervisorPresent = 1;
    15651527            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled Hypervisor Present bit\n"));
     
    15801542
    15811543            /* Valid for both Intel and AMD. */
    1582             pVM->cpum.s.aGuestCpuIdStd[5].ecx = pLeaf->uEcx |= X86_CPUID_MWAIT_ECX_EXT | X86_CPUID_MWAIT_ECX_BREAKIRQIF0;
     1544            pVM->cpum.s.aGuestCpuIdPatmStd[5].ecx = pLeaf->uEcx |= X86_CPUID_MWAIT_ECX_EXT | X86_CPUID_MWAIT_ECX_BREAKIRQIF0;
    15831545            pVM->cpum.s.GuestFeatures.fMWaitExtensions = 1;
    15841546            LogRel(("CPUM: SetGuestCpuIdFeature: Enabled MWAIT Extensions.\n"));
     
    16451607            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    16461608            if (pLeaf)
    1647                 pVM->cpum.s.aGuestCpuIdStd[1].edx = pLeaf->uEdx &= ~X86_CPUID_FEATURE_EDX_APIC;
     1609                pVM->cpum.s.aGuestCpuIdPatmStd[1].edx = pLeaf->uEdx &= ~X86_CPUID_FEATURE_EDX_APIC;
    16481610
    16491611            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001), 0);
    16501612            if (   pLeaf
    16511613                && pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_AMD)
    1652                 pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_AMD_FEATURE_EDX_APIC;
     1614                pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_AMD_FEATURE_EDX_APIC;
    16531615
    16541616            pVM->cpum.s.GuestFeatures.fApic = 0;
     
    16591621            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    16601622            if (pLeaf)
    1661                 pVM->cpum.s.aGuestCpuIdStd[1].ecx = pLeaf->uEcx &= ~X86_CPUID_FEATURE_ECX_X2APIC;
     1623                pVM->cpum.s.aGuestCpuIdPatmStd[1].ecx = pLeaf->uEcx &= ~X86_CPUID_FEATURE_ECX_X2APIC;
    16621624            pVM->cpum.s.GuestFeatures.fX2Apic = 0;
    16631625            Log(("CPUM: ClearGuestCpuIdFeature: Disabled x2APIC\n"));
     
    16671629            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    16681630            if (pLeaf)
    1669                 pVM->cpum.s.aGuestCpuIdStd[1].edx = pLeaf->uEdx &= ~X86_CPUID_FEATURE_EDX_PAE;
     1631                pVM->cpum.s.aGuestCpuIdPatmStd[1].edx = pLeaf->uEdx &= ~X86_CPUID_FEATURE_EDX_PAE;
    16701632
    16711633            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001), 0);
    16721634            if (   pLeaf
    16731635                && pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_AMD)
    1674                 pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_AMD_FEATURE_EDX_PAE;
     1636                pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_AMD_FEATURE_EDX_PAE;
    16751637
    16761638            pVM->cpum.s.GuestFeatures.fPae = 0;
     
    16811643            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    16821644            if (pLeaf)
    1683                 pVM->cpum.s.aGuestCpuIdStd[1].edx = pLeaf->uEdx &= ~X86_CPUID_FEATURE_EDX_PAT;
     1645                pVM->cpum.s.aGuestCpuIdPatmStd[1].edx = pLeaf->uEdx &= ~X86_CPUID_FEATURE_EDX_PAT;
    16841646
    16851647            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001), 0);
    16861648            if (   pLeaf
    16871649                && pVM->cpum.s.GuestFeatures.enmCpuVendor == CPUMCPUVENDOR_AMD)
    1688                 pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_AMD_FEATURE_EDX_PAT;
     1650                pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_AMD_FEATURE_EDX_PAT;
    16891651
    16901652            pVM->cpum.s.GuestFeatures.fPat = 0;
     
    16951657            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001), 0);
    16961658            if (pLeaf)
    1697                 pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_EXT_FEATURE_EDX_LONG_MODE;
     1659                pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_EXT_FEATURE_EDX_LONG_MODE;
    16981660            pVM->cpum.s.GuestFeatures.fLongMode = 0;
    16991661            break;
     
    17021664            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001), 0);
    17031665            if (pLeaf)
    1704                 pVM->cpum.s.aGuestCpuIdExt[1].ecx = pLeaf->uEcx &= ~X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF;
     1666                pVM->cpum.s.aGuestCpuIdPatmExt[1].ecx = pLeaf->uEcx &= ~X86_CPUID_EXT_FEATURE_ECX_LAHF_SAHF;
    17051667            pVM->cpum.s.GuestFeatures.fLahfSahf = 0;
    17061668            break;
     
    17091671            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x80000001), 0);
    17101672            if (pLeaf)
    1711                 pVM->cpum.s.aGuestCpuIdExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_EXT_FEATURE_EDX_RDTSCP;
     1673                pVM->cpum.s.aGuestCpuIdPatmExt[1].edx = pLeaf->uEdx &= ~X86_CPUID_EXT_FEATURE_EDX_RDTSCP;
    17121674            pVM->cpum.s.GuestFeatures.fRdTscP = 0;
    17131675            Log(("CPUM: ClearGuestCpuIdFeature: Disabled RDTSCP!\n"));
     
    17171679            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000001), 0);
    17181680            if (pLeaf)
    1719                 pVM->cpum.s.aGuestCpuIdStd[1].ecx = pLeaf->uEcx &= ~X86_CPUID_FEATURE_ECX_HVP;
     1681                pVM->cpum.s.aGuestCpuIdPatmStd[1].ecx = pLeaf->uEcx &= ~X86_CPUID_FEATURE_ECX_HVP;
    17201682            pVM->cpum.s.GuestFeatures.fHypervisorPresent = 0;
    17211683            break;
     
    17241686            pLeaf = cpumCpuIdGetLeaf(pVM, UINT32_C(0x00000005), 0);
    17251687            if (pLeaf)
    1726                 pVM->cpum.s.aGuestCpuIdStd[5].ecx = pLeaf->uEcx &= ~(X86_CPUID_MWAIT_ECX_EXT | X86_CPUID_MWAIT_ECX_BREAKIRQIF0);
     1688                pVM->cpum.s.aGuestCpuIdPatmStd[5].ecx = pLeaf->uEcx &= ~(X86_CPUID_MWAIT_ECX_EXT | X86_CPUID_MWAIT_ECX_BREAKIRQIF0);
    17271689            pVM->cpum.s.GuestFeatures.fMWaitExtensions = 0;
    17281690            Log(("CPUM: ClearGuestCpuIdFeature: Disabled MWAIT Extensions!\n"));
  • trunk/src/VBox/VMM/VMMAll/CPUMStack.cpp

    r44528 r54674  
    55
    66/*
    7  * Copyright (C) 2006-2012 Oracle Corporation
     7 * Copyright (C) 2006-2015 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
  • trunk/src/VBox/VMM/VMMR0/CPUMR0.cpp

    r54537 r54674  
    55
    66/*
    7  * Copyright (C) 2006-2013 Oracle Corporation
     7 * Copyright (C) 2006-2015 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    158158        uint32_t   uLeaf = g_aCpuidUnifyBits[i].uLeaf;
    159159        PCPUMCPUID pLegacyLeaf;
    160         if (uLeaf < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdStd))
    161             pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdStd[uLeaf];
    162         else if (uLeaf - UINT32_C(0x80000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdExt))
    163             pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdExt[uLeaf - UINT32_C(0x80000000)];
    164         else if (uLeaf - UINT32_C(0xc0000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdCentaur))
    165             pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdCentaur[uLeaf - UINT32_C(0xc0000000)];
     160        if (uLeaf < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmStd))
     161            pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdPatmStd[uLeaf];
     162        else if (uLeaf - UINT32_C(0x80000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmExt))
     163            pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdPatmExt[uLeaf - UINT32_C(0x80000000)];
     164        else if (uLeaf - UINT32_C(0xc0000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmCentaur))
     165            pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdPatmCentaur[uLeaf - UINT32_C(0xc0000000)];
    166166        else
    167167            continue;
     
    291291            {
    292292                PCPUMCPUID pLegacyLeaf;
    293                 if (uLeaf < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdStd))
    294                     pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdStd[uLeaf];
    295                 else if (uLeaf - UINT32_C(0x80000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdExt))
    296                     pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdExt[uLeaf - UINT32_C(0x80000000)];
    297                 else if (uLeaf - UINT32_C(0xc0000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdCentaur))
    298                     pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdCentaur[uLeaf - UINT32_C(0xc0000000)];
     293                if (uLeaf < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmStd))
     294                    pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdPatmStd[uLeaf];
     295                else if (uLeaf - UINT32_C(0x80000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmExt))
     296                    pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdPatmExt[uLeaf - UINT32_C(0x80000000)];
     297                else if (uLeaf - UINT32_C(0xc0000000) < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmCentaur))
     298                    pLegacyLeaf = &pVM->cpum.s.aGuestCpuIdPatmCentaur[uLeaf - UINT32_C(0xc0000000)];
    299299                else
    300300                    continue;
  • trunk/src/VBox/VMM/VMMR0/CPUMR0A.asm

    r52465 r54674  
    55
    66;
    7 ; Copyright (C) 2006-2013 Oracle Corporation
     7; Copyright (C) 2006-2015 Oracle Corporation
    88;
    99; This file is part of VirtualBox Open Source Edition (OSE), as
  • trunk/src/VBox/VMM/VMMR0/CPUMR0UnusedA.asm

    r50661 r54674  
    55
    66;
    7 ; Copyright (C) 2006-2011 Oracle Corporation
     7; Copyright (C) 2006-2015 Oracle Corporation
    88;
    99; This file is part of VirtualBox Open Source Edition (OSE), as
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r54561 r54674  
    718718{
    719719    /*
    720      * Workaround for missing cpuid(0) patches when leaf 4 returns GuestCpuIdDef:
     720     * Workaround for missing cpuid(0) patches when leaf 4 returns GuestCpuIdPatmDef:
    721721     * If we miss to patch a cpuid(0).eax then Linux tries to determine the number
    722722     * of processors from (cpuid(4).eax >> 26) + 1.
     
    727727    if (!fHWVirtExEnabled)
    728728    {
    729         Assert(   pVM->cpum.s.aGuestCpuIdStd[4].eax == 0
    730                || pVM->cpum.s.aGuestCpuIdStd[0].eax < 0x4);
    731         pVM->cpum.s.aGuestCpuIdStd[4].eax = 0;
     729        Assert(   pVM->cpum.s.aGuestCpuIdPatmStd[4].eax == 0
     730               || pVM->cpum.s.aGuestCpuIdPatmStd[0].eax < 0x4);
     731        pVM->cpum.s.aGuestCpuIdPatmStd[4].eax = 0;
    732732    }
    733733}
     
    11661166    uint32_t cElements;
    11671167    int rc = SSMR3GetU32(pSSM, &cElements); AssertRCReturn(rc, rc);
    1168     if (cElements > RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdStd))
     1168    if (cElements > RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmStd))
    11691169        return VERR_SSM_DATA_UNIT_FORMAT_CHANGED;
    1170     SSMR3GetMem(pSSM, &pVM->cpum.s.aGuestCpuIdStd[0], cElements*sizeof(pVM->cpum.s.aGuestCpuIdStd[0]));
     1170    SSMR3GetMem(pSSM, &pVM->cpum.s.aGuestCpuIdPatmStd[0], cElements*sizeof(pVM->cpum.s.aGuestCpuIdPatmStd[0]));
    11711171
    11721172    rc = SSMR3GetU32(pSSM, &cElements); AssertRCReturn(rc, rc);
    1173     if (cElements != RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdExt))
     1173    if (cElements != RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmExt))
    11741174        return VERR_SSM_DATA_UNIT_FORMAT_CHANGED;
    1175     SSMR3GetMem(pSSM, &pVM->cpum.s.aGuestCpuIdExt[0], sizeof(pVM->cpum.s.aGuestCpuIdExt));
     1175    SSMR3GetMem(pSSM, &pVM->cpum.s.aGuestCpuIdPatmExt[0], sizeof(pVM->cpum.s.aGuestCpuIdPatmExt));
    11761176
    11771177    rc = SSMR3GetU32(pSSM, &cElements); AssertRCReturn(rc, rc);
    1178     if (cElements != RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdCentaur))
     1178    if (cElements != RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmCentaur))
    11791179        return VERR_SSM_DATA_UNIT_FORMAT_CHANGED;
    1180     SSMR3GetMem(pSSM, &pVM->cpum.s.aGuestCpuIdCentaur[0], sizeof(pVM->cpum.s.aGuestCpuIdCentaur));
    1181 
    1182     SSMR3GetMem(pSSM, &pVM->cpum.s.GuestCpuIdDef, sizeof(pVM->cpum.s.GuestCpuIdDef));
     1180    SSMR3GetMem(pSSM, &pVM->cpum.s.aGuestCpuIdPatmCentaur[0], sizeof(pVM->cpum.s.aGuestCpuIdPatmCentaur));
     1181
     1182    SSMR3GetMem(pSSM, &pVM->cpum.s.GuestCpuIdPatmDef, sizeof(pVM->cpum.s.GuestCpuIdPatmDef));
    11831183
    11841184    /*
     
    12321232         * features in the future.
    12331233         */
    1234         AssertRelease(!(pVM->cpum.s.aGuestCpuIdStd[1].ecx &
     1234        AssertRelease(!(pVM->cpum.s.aGuestCpuIdPatmStd[1].ecx &
    12351235                              (   X86_CPUID_FEATURE_ECX_DTES64
    12361236                               |  X86_CPUID_FEATURE_ECX_VMX
     
    18751875    CPUMCPUID   Host;
    18761876    CPUMCPUID   Guest;
    1877     unsigned    cStdMax = pVM->cpum.s.aGuestCpuIdStd[0].eax;
     1877    unsigned    cStdMax = pVM->cpum.s.aGuestCpuIdPatmStd[0].eax;
    18781878
    18791879    uint32_t    cStdHstMax;
     
    18811881    ASMCpuIdExSlow(0, 0, 0, 0, &cStdHstMax, &dummy, &dummy, &dummy);
    18821882
    1883     unsigned    cStdLstMax = RT_MAX(RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdStd), cStdHstMax);
     1883    unsigned    cStdLstMax = RT_MAX(RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmStd), cStdHstMax);
    18841884
    18851885    pHlp->pfnPrintf(pHlp,
     
    18881888    for (unsigned i = 0; i <= cStdLstMax ; i++)
    18891889    {
    1890         if (i < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdStd))
     1890        if (i < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmStd))
    18911891        {
    1892             Guest = pVM->cpum.s.aGuestCpuIdStd[i];
     1892            Guest = pVM->cpum.s.aGuestCpuIdPatmStd[i];
    18931893            ASMCpuIdExSlow(i, 0, 0, 0, &Host.eax, &Host.ebx, &Host.ecx, &Host.edx);
    18941894
     
    19151915    if (iVerbosity)
    19161916    {
    1917         Guest = pVM->cpum.s.aGuestCpuIdStd[0];
     1917        Guest = pVM->cpum.s.aGuestCpuIdPatmStd[0];
    19181918        pHlp->pfnPrintf(pHlp,
    19191919                        "Name:                            %.04s%.04s%.04s\n"
     
    19251925     * Get Features.
    19261926     */
    1927     bool const fIntel = ASMIsIntelCpuEx(pVM->cpum.s.aGuestCpuIdStd[0].ebx,
    1928                                         pVM->cpum.s.aGuestCpuIdStd[0].ecx,
    1929                                         pVM->cpum.s.aGuestCpuIdStd[0].edx);
     1927    bool const fIntel = ASMIsIntelCpuEx(pVM->cpum.s.aGuestCpuIdPatmStd[0].ebx,
     1928                                        pVM->cpum.s.aGuestCpuIdPatmStd[0].ecx,
     1929                                        pVM->cpum.s.aGuestCpuIdPatmStd[0].edx);
    19301930    if (cStdMax >= 1 && iVerbosity)
    19311931    {
    19321932        static const char * const s_apszTypes[4] = { "primary", "overdrive", "MP", "reserved" };
    19331933
    1934         Guest = pVM->cpum.s.aGuestCpuIdStd[1];
     1934        Guest = pVM->cpum.s.aGuestCpuIdPatmStd[1];
    19351935        uint32_t uEAX = Guest.eax;
    19361936
     
    21122112     * Implemented after AMD specs.
    21132113     */
    2114     unsigned    cExtMax = pVM->cpum.s.aGuestCpuIdExt[0].eax & 0xffff;
     2114    unsigned    cExtMax = pVM->cpum.s.aGuestCpuIdPatmExt[0].eax & 0xffff;
    21152115
    21162116    pHlp->pfnPrintf(pHlp,
     
    21192119                    "     Function  eax      ebx      ecx      edx\n");
    21202120    bool fSupportsInvariantTsc = false;
    2121     for (unsigned i = 0; i < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdExt); i++)
    2122     {
    2123         Guest = pVM->cpum.s.aGuestCpuIdExt[i];
     2121    for (unsigned i = 0; i < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmExt); i++)
     2122    {
     2123        Guest = pVM->cpum.s.aGuestCpuIdPatmExt[i];
    21242124        ASMCpuIdExSlow(0x80000000 | i, 0, 0, 0, &Host.eax, &Host.ebx, &Host.ecx, &Host.edx);
    21252125
     
    21422142    if (iVerbosity)
    21432143    {
    2144         Guest = pVM->cpum.s.aGuestCpuIdExt[0];
     2144        Guest = pVM->cpum.s.aGuestCpuIdPatmExt[0];
    21452145        pHlp->pfnPrintf(pHlp,
    21462146                        "Ext Name:                        %.4s%.4s%.4s\n"
     
    21512151    if (iVerbosity && cExtMax >= 1)
    21522152    {
    2153         Guest = pVM->cpum.s.aGuestCpuIdExt[1];
     2153        Guest = pVM->cpum.s.aGuestCpuIdPatmExt[1];
    21542154        uint32_t uEAX = Guest.eax;
    21552155        pHlp->pfnPrintf(pHlp,
     
    22862286        char szString[4*4*3+1] = {0};
    22872287        uint32_t *pu32 = (uint32_t *)szString;
    2288         *pu32++ = pVM->cpum.s.aGuestCpuIdExt[2].eax;
    2289         *pu32++ = pVM->cpum.s.aGuestCpuIdExt[2].ebx;
    2290         *pu32++ = pVM->cpum.s.aGuestCpuIdExt[2].ecx;
    2291         *pu32++ = pVM->cpum.s.aGuestCpuIdExt[2].edx;
     2288        *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[2].eax;
     2289        *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[2].ebx;
     2290        *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[2].ecx;
     2291        *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[2].edx;
    22922292        if (cExtMax >= 3)
    22932293        {
    2294             *pu32++ = pVM->cpum.s.aGuestCpuIdExt[3].eax;
    2295             *pu32++ = pVM->cpum.s.aGuestCpuIdExt[3].ebx;
    2296             *pu32++ = pVM->cpum.s.aGuestCpuIdExt[3].ecx;
    2297             *pu32++ = pVM->cpum.s.aGuestCpuIdExt[3].edx;
     2294            *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[3].eax;
     2295            *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[3].ebx;
     2296            *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[3].ecx;
     2297            *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[3].edx;
    22982298        }
    22992299        if (cExtMax >= 4)
    23002300        {
    2301             *pu32++ = pVM->cpum.s.aGuestCpuIdExt[4].eax;
    2302             *pu32++ = pVM->cpum.s.aGuestCpuIdExt[4].ebx;
    2303             *pu32++ = pVM->cpum.s.aGuestCpuIdExt[4].ecx;
    2304             *pu32++ = pVM->cpum.s.aGuestCpuIdExt[4].edx;
     2301            *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[4].eax;
     2302            *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[4].ebx;
     2303            *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[4].ecx;
     2304            *pu32++ = pVM->cpum.s.aGuestCpuIdPatmExt[4].edx;
    23052305        }
    23062306        pHlp->pfnPrintf(pHlp, "Full Name:                       %s\n", szString);
     
    23092309    if (iVerbosity && cExtMax >= 5)
    23102310    {
    2311         uint32_t uEAX = pVM->cpum.s.aGuestCpuIdExt[5].eax;
    2312         uint32_t uEBX = pVM->cpum.s.aGuestCpuIdExt[5].ebx;
    2313         uint32_t uECX = pVM->cpum.s.aGuestCpuIdExt[5].ecx;
    2314         uint32_t uEDX = pVM->cpum.s.aGuestCpuIdExt[5].edx;
     2311        uint32_t uEAX = pVM->cpum.s.aGuestCpuIdPatmExt[5].eax;
     2312        uint32_t uEBX = pVM->cpum.s.aGuestCpuIdPatmExt[5].ebx;
     2313        uint32_t uECX = pVM->cpum.s.aGuestCpuIdPatmExt[5].ecx;
     2314        uint32_t uEDX = pVM->cpum.s.aGuestCpuIdPatmExt[5].edx;
    23152315        char sz1[32];
    23162316        char sz2[32];
     
    23472347    if (iVerbosity && cExtMax >= 6)
    23482348    {
    2349         uint32_t uEAX = pVM->cpum.s.aGuestCpuIdExt[6].eax;
    2350         uint32_t uEBX = pVM->cpum.s.aGuestCpuIdExt[6].ebx;
    2351         uint32_t uEDX = pVM->cpum.s.aGuestCpuIdExt[6].edx;
     2349        uint32_t uEAX = pVM->cpum.s.aGuestCpuIdPatmExt[6].eax;
     2350        uint32_t uEBX = pVM->cpum.s.aGuestCpuIdPatmExt[6].ebx;
     2351        uint32_t uEDX = pVM->cpum.s.aGuestCpuIdPatmExt[6].edx;
    23522352
    23532353        pHlp->pfnPrintf(pHlp,
     
    23742374    if (iVerbosity && cExtMax >= 7)
    23752375    {
    2376         uint32_t uEDX = pVM->cpum.s.aGuestCpuIdExt[7].edx;
     2376        uint32_t uEDX = pVM->cpum.s.aGuestCpuIdPatmExt[7].edx;
    23772377
    23782378        pHlp->pfnPrintf(pHlp, "Host Invariant-TSC support:      %RTbool\n", fSupportsInvariantTsc);
     
    23962396    if (iVerbosity && cExtMax >= 8)
    23972397    {
    2398         uint32_t uEAX = pVM->cpum.s.aGuestCpuIdExt[8].eax;
    2399         uint32_t uECX = pVM->cpum.s.aGuestCpuIdExt[8].ecx;
     2398        uint32_t uEAX = pVM->cpum.s.aGuestCpuIdPatmExt[8].eax;
     2399        uint32_t uECX = pVM->cpum.s.aGuestCpuIdPatmExt[8].ecx;
    24002400
    24012401        pHlp->pfnPrintf(pHlp,
     
    24252425    if (cStdMax >= 1)
    24262426    {
    2427         Guest     = pVM->cpum.s.aGuestCpuIdStd[1];
     2427        Guest     = pVM->cpum.s.aGuestCpuIdPatmStd[1];
    24282428        fGuestHvp = RT_BOOL(Guest.ecx & X86_CPUID_FEATURE_ECX_HVP);
    24292429    }
     
    24812481     * Centaur.
    24822482     */
    2483     unsigned cCentaurMax = pVM->cpum.s.aGuestCpuIdCentaur[0].eax & 0xffff;
     2483    unsigned cCentaurMax = pVM->cpum.s.aGuestCpuIdPatmCentaur[0].eax & 0xffff;
    24842484
    24852485    pHlp->pfnPrintf(pHlp,
     
    24872487                    "         RAW Centaur CPUIDs\n"
    24882488                    "     Function  eax      ebx      ecx      edx\n");
    2489     for (unsigned i = 0; i < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdCentaur); i++)
    2490     {
    2491         Guest = pVM->cpum.s.aGuestCpuIdCentaur[i];
     2489    for (unsigned i = 0; i < RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmCentaur); i++)
     2490    {
     2491        Guest = pVM->cpum.s.aGuestCpuIdPatmCentaur[i];
    24922492        ASMCpuIdExSlow(0xc0000000 | i, 0, 0, 0, &Host.eax, &Host.ebx, &Host.ecx, &Host.edx);
    24932493
     
    25052505    if (iVerbosity)
    25062506    {
    2507         Guest = pVM->cpum.s.aGuestCpuIdCentaur[0];
     2507        Guest = pVM->cpum.s.aGuestCpuIdPatmCentaur[0];
    25082508        pHlp->pfnPrintf(pHlp,
    25092509                        "Centaur Supports:                0xc0000000-%#010x\n",
     
    25142514    {
    25152515        ASMCpuIdExSlow(0xc0000001, 0, 0, 0, &Host.eax, &Host.ebx, &Host.ecx, &Host.edx);
    2516         uint32_t uEdxGst = pVM->cpum.s.aGuestCpuIdCentaur[1].edx;
     2516        uint32_t uEdxGst = pVM->cpum.s.aGuestCpuIdPatmCentaur[1].edx;
    25172517        uint32_t uEdxHst = Host.edx;
    25182518
     
    28062806
    28072807/**
    2808  * Gets a pointer to the array of standard CPUID leaves.
    2809  *
    2810  * CPUMR3GetGuestCpuIdStdMax() give the size of the array.
    2811  *
    2812  * @returns Pointer to the standard CPUID leaves (read-only).
    2813  * @param   pVM         Pointer to the VM.
    2814  * @remark  Intended for PATM.
    2815  */
    2816 VMMR3DECL(RCPTRTYPE(PCCPUMCPUID)) CPUMR3GetGuestCpuIdStdRCPtr(PVM pVM)
    2817 {
    2818     return RCPTRTYPE(PCCPUMCPUID)VM_RC_ADDR(pVM, &pVM->cpum.s.aGuestCpuIdStd[0]);
    2819 }
    2820 
    2821 
    2822 /**
    2823  * Gets a pointer to the array of extended CPUID leaves.
    2824  *
    2825  * CPUMGetGuestCpuIdExtMax() give the size of the array.
    2826  *
    2827  * @returns Pointer to the extended CPUID leaves (read-only).
    2828  * @param   pVM         Pointer to the VM.
    2829  * @remark  Intended for PATM.
    2830  */
    2831 VMMR3DECL(RCPTRTYPE(PCCPUMCPUID)) CPUMR3GetGuestCpuIdExtRCPtr(PVM pVM)
    2832 {
    2833     return (RCPTRTYPE(PCCPUMCPUID))VM_RC_ADDR(pVM, &pVM->cpum.s.aGuestCpuIdExt[0]);
    2834 }
    2835 
    2836 
    2837 /**
    2838  * Gets a pointer to the array of centaur CPUID leaves.
    2839  *
    2840  * CPUMGetGuestCpuIdCentaurMax() give the size of the array.
    2841  *
    2842  * @returns Pointer to the centaur CPUID leaves (read-only).
    2843  * @param   pVM         Pointer to the VM.
    2844  * @remark  Intended for PATM.
    2845  */
    2846 VMMR3DECL(RCPTRTYPE(PCCPUMCPUID)) CPUMR3GetGuestCpuIdCentaurRCPtr(PVM pVM)
    2847 {
    2848     return (RCPTRTYPE(PCCPUMCPUID))VM_RC_ADDR(pVM, &pVM->cpum.s.aGuestCpuIdCentaur[0]);
    2849 }
    2850 
    2851 
    2852 /**
    2853  * Gets a pointer to the default CPUID leaf.
    2854  *
    2855  * @returns Pointer to the default CPUID leaf (read-only).
    2856  * @param   pVM         Pointer to the VM.
    2857  * @remark  Intended for PATM.
    2858  */
    2859 VMMR3DECL(RCPTRTYPE(PCCPUMCPUID)) CPUMR3GetGuestCpuIdDefRCPtr(PVM pVM)
    2860 {
    2861     return (RCPTRTYPE(PCCPUMCPUID))VM_RC_ADDR(pVM, &pVM->cpum.s.GuestCpuIdDef);
    2862 }
    2863 
    2864 
    2865 /**
    28662808 * Enters REM, gets and resets the changed flags (CPUM_CHANGED_*).
    28672809 *
  • trunk/src/VBox/VMM/VMMR3/CPUMDbg.cpp

    r54047 r54674  
    55
    66/*
    7  * Copyright (C) 2010-2012 Oracle Corporation
     7 * Copyright (C) 2010-2015 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
  • trunk/src/VBox/VMM/VMMR3/CPUMR3CpuId.cpp

    r54561 r54674  
    17981798    struct { PCPUMCPUID paCpuIds; uint32_t cCpuIds, uBase; } aOldRanges[] =
    17991799    {
    1800         { pCPUM->aGuestCpuIdStd,        RT_ELEMENTS(pCPUM->aGuestCpuIdStd),     0x00000000 },
    1801         { pCPUM->aGuestCpuIdExt,        RT_ELEMENTS(pCPUM->aGuestCpuIdExt),     0x80000000 },
    1802         { pCPUM->aGuestCpuIdCentaur,    RT_ELEMENTS(pCPUM->aGuestCpuIdCentaur), 0xc0000000 },
     1800        { pCPUM->aGuestCpuIdPatmStd,        RT_ELEMENTS(pCPUM->aGuestCpuIdPatmStd),     0x00000000 },
     1801        { pCPUM->aGuestCpuIdPatmExt,        RT_ELEMENTS(pCPUM->aGuestCpuIdPatmExt),     0x80000000 },
     1802        { pCPUM->aGuestCpuIdPatmCentaur,    RT_ELEMENTS(pCPUM->aGuestCpuIdPatmCentaur), 0xc0000000 },
    18031803    };
    18041804    for (uint32_t i = 0; i < RT_ELEMENTS(aOldRanges); i++)
     
    18261826    }
    18271827
    1828     pCPUM->GuestCpuIdDef = pCPUM->GuestInfo.DefCpuId;
     1828    pCPUM->GuestCpuIdPatmDef = pCPUM->GuestInfo.DefCpuId;
    18291829
    18301830    return VINF_SUCCESS;
     
    25862586     * upon loading.
    25872587     */
    2588     SSMR3PutU32(pSSM, RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdStd));
    2589     SSMR3PutMem(pSSM, &pVM->cpum.s.aGuestCpuIdStd[0], sizeof(pVM->cpum.s.aGuestCpuIdStd));
    2590 
    2591     SSMR3PutU32(pSSM, RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdExt));
    2592     SSMR3PutMem(pSSM, &pVM->cpum.s.aGuestCpuIdExt[0], sizeof(pVM->cpum.s.aGuestCpuIdExt));
    2593 
    2594     SSMR3PutU32(pSSM, RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdCentaur));
    2595     SSMR3PutMem(pSSM, &pVM->cpum.s.aGuestCpuIdCentaur[0], sizeof(pVM->cpum.s.aGuestCpuIdCentaur));
    2596 
    2597     SSMR3PutMem(pSSM, &pVM->cpum.s.GuestCpuIdDef, sizeof(pVM->cpum.s.GuestCpuIdDef));
     2588    SSMR3PutU32(pSSM, RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmStd));
     2589    SSMR3PutMem(pSSM, &pVM->cpum.s.aGuestCpuIdPatmStd[0], sizeof(pVM->cpum.s.aGuestCpuIdPatmStd));
     2590
     2591    SSMR3PutU32(pSSM, RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmExt));
     2592    SSMR3PutMem(pSSM, &pVM->cpum.s.aGuestCpuIdPatmExt[0], sizeof(pVM->cpum.s.aGuestCpuIdPatmExt));
     2593
     2594    SSMR3PutU32(pSSM, RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmCentaur));
     2595    SSMR3PutMem(pSSM, &pVM->cpum.s.aGuestCpuIdPatmCentaur[0], sizeof(pVM->cpum.s.aGuestCpuIdPatmCentaur));
     2596
     2597    SSMR3PutMem(pSSM, &pVM->cpum.s.GuestCpuIdPatmDef, sizeof(pVM->cpum.s.GuestCpuIdPatmDef));
    25982598
    25992599    /*
     
    28312831#define CPUID_GST_FEATURE2_WRN(reg, ExtBit, StdBit) \
    28322832    do { \
    2833         if (    (aGuestCpuIdExt [1].reg    & (ExtBit)) \
     2833        if (    (aGuestCpuId[1].reg        & (ExtBit)) \
    28342834            && !(fHostAmd  \
    28352835                 ? aHostRawExt[1].reg      & (ExtBit) \
     
    28612861    /** @todo we'll be leaking paLeaves on error return... */
    28622862
    2863     CPUMCPUID   GuestCpuIdDef;
    2864     rc = SSMR3GetMem(pSSM, &GuestCpuIdDef, sizeof(GuestCpuIdDef));
     2863    CPUMCPUID   GuestCpuIdPatmDef;
     2864    rc = SSMR3GetMem(pSSM, &GuestCpuIdPatmDef, sizeof(GuestCpuIdPatmDef));
    28652865    AssertRCReturn(rc, rc);
    28662866
     
    29652965        CPUID_RAW_FEATURE_IGN(Std, ecx, X86_CPUID_FEATURE_ECX_PDCM);
    29662966        CPUID_RAW_FEATURE_RET(Std, ecx, RT_BIT_32(16) /*reserved*/);
    2967         CPUID_RAW_FEATURE_RET(Std, ecx, RT_BIT_32(17) /*reserved*/);
     2967        CPUID_RAW_FEATURE_IGN(Std, ecx, X86_CPUID_FEATURE_ECX_PCID);
    29682968        CPUID_RAW_FEATURE_IGN(Std, ecx, X86_CPUID_FEATURE_ECX_DCA);
    29692969        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_SSE4_1);
     
    29722972        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_MOVBE);
    29732973        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_POPCNT);
    2974         CPUID_RAW_FEATURE_RET(Std, ecx, RT_BIT_32(24) /*reserved*/);
     2974        CPUID_RAW_FEATURE_IGN(Std, ecx, X86_CPUID_FEATURE_ECX_TSCDEADL);
    29752975        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_AES);
    29762976        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_XSAVE);
    29772977        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_OSXSAVE);
    29782978        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_AVX);
    2979         CPUID_RAW_FEATURE_RET(Std, ecx, RT_BIT_32(29) /*reserved*/);
    2980         CPUID_RAW_FEATURE_RET(Std, ecx, RT_BIT_32(30) /*reserved*/);
     2979        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_F16C);
     2980        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_RDRAND);
    29812981        CPUID_RAW_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_HVP);
    29822982
     
    31753175    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_PDCM);    // -> EMU
    31763176    CPUID_GST_FEATURE_RET(Std, ecx, RT_BIT_32(16) /*reserved*/);
    3177     CPUID_GST_FEATURE_RET(Std, ecx, RT_BIT_32(17) /*reserved*/);
     3177    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_PCID);
    31783178    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_DCA);     // -> EMU?
    31793179    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_SSE4_1);  // -> EMU
     
    31823182    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_MOVBE);   // -> EMU
    31833183    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_POPCNT);  // -> EMU
    3184     CPUID_GST_FEATURE_RET(Std, ecx, RT_BIT_32(24) /*reserved*/);
     3184    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_TSCDEADL);
    31853185    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_AES);     // -> EMU
    31863186    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_XSAVE);   // -> EMU
    31873187    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_OSXSAVE); // -> EMU
    31883188    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_AVX);     // -> EMU?
    3189     CPUID_GST_FEATURE_RET(Std, ecx, RT_BIT_32(29) /*reserved*/);
    3190     CPUID_GST_FEATURE_RET(Std, ecx, RT_BIT_32(30) /*reserved*/);
     3189    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_F16C);
     3190    CPUID_GST_FEATURE_RET(Std, ecx, X86_CPUID_FEATURE_ECX_RDRAND);
    31913191    CPUID_GST_FEATURE_IGN(Std, ecx, X86_CPUID_FEATURE_ECX_HVP);     // Normally not set by host
    31923192
     
    33093309    pVM->cpum.s.GuestInfo.paCpuIdLeavesR0 = NIL_RTR0PTR;
    33103310    pVM->cpum.s.GuestInfo.paCpuIdLeavesRC = NIL_RTRCPTR;
    3311     pVM->cpum.s.GuestInfo.DefCpuId = GuestCpuIdDef;
     3311    pVM->cpum.s.GuestInfo.DefCpuId = GuestCpuIdPatmDef;
    33123312    rc = cpumR3CpuIdInstallAndExplodeLeaves(pVM, &pVM->cpum.s, paLeaves, cLeaves);
    33133313    RTMemFree(paLeaves);
     
    33383338}
    33393339
     3340
     3341
     3342# if defined(VBOX_WITH_RAW_MODE) || defined(DOXYGEN_RUNNING)
     3343/** @name Patchmanager CPUID legacy table APIs
     3344 * @{
     3345 */
     3346
     3347/**
     3348 * Gets a number of standard CPUID leafs (PATM only).
     3349 *
     3350 * @returns Number of leafs.
     3351 * @param   pVM         Pointer to the VM.
     3352 * @remark  Intended for PATM.
     3353 */
     3354VMMR3_INT_DECL(uint32_t) CPUMR3GetGuestCpuIdPatmStdMax(PVM pVM)
     3355{
     3356    return RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmStd);
     3357}
     3358
     3359
     3360/**
     3361 * Gets a number of extended CPUID leafs (PATM only).
     3362 *
     3363 * @returns Number of leafs.
     3364 * @param   pVM         Pointer to the VM.
     3365 * @remark  Intended for PATM.
     3366 */
     3367VMMR3_INT_DECL(uint32_t) CPUMR3GetGuestCpuIdPatmExtMax(PVM pVM)
     3368{
     3369    return RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmExt);
     3370}
     3371
     3372
     3373/**
     3374 * Gets a number of centaur CPUID leafs.
     3375 *
     3376 * @returns Number of leafs.
     3377 * @param   pVM         Pointer to the VM.
     3378 * @remark  Intended for PATM.
     3379 */
     3380VMMR3_INT_DECL(uint32_t) CPUMR3GetGuestCpuIdPatmCentaurMax(PVM pVM)
     3381{
     3382    return RT_ELEMENTS(pVM->cpum.s.aGuestCpuIdPatmCentaur);
     3383}
     3384
     3385
     3386/**
     3387 * Gets a pointer to the array of standard CPUID leaves.
     3388 *
     3389 * CPUMR3GetGuestCpuIdStdMax() give the size of the array.
     3390 *
     3391 * @returns Pointer to the standard CPUID leaves (read-only).
     3392 * @param   pVM         Pointer to the VM.
     3393 * @remark  Intended for PATM.
     3394 */
     3395VMMR3_INT_DECL(RCPTRTYPE(PCCPUMCPUID)) CPUMR3GetGuestCpuIdPatmStdRCPtr(PVM pVM)
     3396{
     3397    return RCPTRTYPE(PCCPUMCPUID)VM_RC_ADDR(pVM, &pVM->cpum.s.aGuestCpuIdPatmStd[0]);
     3398}
     3399
     3400
     3401/**
     3402 * Gets a pointer to the array of extended CPUID leaves.
     3403 *
     3404 * CPUMGetGuestCpuIdExtMax() give the size of the array.
     3405 *
     3406 * @returns Pointer to the extended CPUID leaves (read-only).
     3407 * @param   pVM         Pointer to the VM.
     3408 * @remark  Intended for PATM.
     3409 */
     3410VMMR3_INT_DECL(RCPTRTYPE(PCCPUMCPUID)) CPUMR3GetGuestCpuIdPatmExtRCPtr(PVM pVM)
     3411{
     3412    return (RCPTRTYPE(PCCPUMCPUID))VM_RC_ADDR(pVM, &pVM->cpum.s.aGuestCpuIdPatmExt[0]);
     3413}
     3414
     3415
     3416/**
     3417 * Gets a pointer to the array of centaur CPUID leaves.
     3418 *
     3419 * CPUMGetGuestCpuIdCentaurMax() give the size of the array.
     3420 *
     3421 * @returns Pointer to the centaur CPUID leaves (read-only).
     3422 * @param   pVM         Pointer to the VM.
     3423 * @remark  Intended for PATM.
     3424 */
     3425VMMR3_INT_DECL(RCPTRTYPE(PCCPUMCPUID)) CPUMR3GetGuestCpuIdPatmCentaurRCPtr(PVM pVM)
     3426{
     3427    return (RCPTRTYPE(PCCPUMCPUID))VM_RC_ADDR(pVM, &pVM->cpum.s.aGuestCpuIdPatmCentaur[0]);
     3428}
     3429
     3430
     3431/**
     3432 * Gets a pointer to the default CPUID leaf.
     3433 *
     3434 * @returns Pointer to the default CPUID leaf (read-only).
     3435 * @param   pVM         Pointer to the VM.
     3436 * @remark  Intended for PATM.
     3437 */
     3438VMMR3_INT_DECL(RCPTRTYPE(PCCPUMCPUID)) CPUMR3GetGuestCpuIdPatmDefRCPtr(PVM pVM)
     3439{
     3440    return (RCPTRTYPE(PCCPUMCPUID))VM_RC_ADDR(pVM, &pVM->cpum.s.GuestCpuIdPatmDef);
     3441}
     3442
     3443/** @} */
     3444# endif /* VBOX_WITH_RAW_MODE || DOXYGEN_RUNNING */
     3445
    33403446#endif /* VBOX_IN_VMM */
     3447
  • trunk/src/VBox/VMM/VMMR3/CPUMR3Db.cpp

    r51641 r54674  
    55
    66/*
    7  * Copyright (C) 2013 Oracle Corporation
     7 * Copyright (C) 2013-2015 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
  • trunk/src/VBox/VMM/VMMR3/PATMPatch.cpp

    r46150 r54674  
    225225                case PATM_CPUID_STD_PTR:
    226226                    /* @todo dirty hack when correcting this fixup (state restore) */
    227                     dest = CPUMR3GetGuestCpuIdStdRCPtr(pVM);
     227                    dest = CPUMR3GetGuestCpuIdPatmStdRCPtr(pVM);
    228228                    break;
    229229
    230230                case PATM_CPUID_EXT_PTR:
    231231                    /* @todo dirty hack when correcting this fixup (state restore) */
    232                     dest = CPUMR3GetGuestCpuIdExtRCPtr(pVM);
     232                    dest = CPUMR3GetGuestCpuIdPatmExtRCPtr(pVM);
    233233                    break;
    234234
    235235                case PATM_CPUID_CENTAUR_PTR:
    236236                    /* @todo dirty hack when correcting this fixup (state restore) */
    237                     dest = CPUMR3GetGuestCpuIdCentaurRCPtr(pVM);
     237                    dest = CPUMR3GetGuestCpuIdPatmCentaurRCPtr(pVM);
    238238                    break;
    239239
    240240                case PATM_CPUID_DEF_PTR:
    241241                    /* @todo dirty hack when correcting this fixup (state restore) */
    242                     dest = CPUMR3GetGuestCpuIdDefRCPtr(pVM);
     242                    dest = CPUMR3GetGuestCpuIdPatmDefRCPtr(pVM);
    243243                    break;
    244244
    245245                case PATM_CPUID_STD_MAX:
    246                     dest = CPUMGetGuestCpuIdStdMax(pVM);
     246                    dest = CPUMR3GetGuestCpuIdPatmStdMax(pVM);
    247247                    break;
    248248
    249249                case PATM_CPUID_EXT_MAX:
    250                     dest = CPUMGetGuestCpuIdExtMax(pVM);
     250                    dest = CPUMR3GetGuestCpuIdPatmExtMax(pVM);
    251251                    break;
    252252
    253253                case PATM_CPUID_CENTAUR_MAX:
    254                     dest = CPUMGetGuestCpuIdCentaurMax(pVM);
     254                    dest = CPUMR3GetGuestCpuIdPatmCentaurMax(pVM);
    255255                    break;
    256256
  • trunk/src/VBox/VMM/VMMR3/PATMSSM.cpp

    r52771 r54674  
    566566        if (*pFixup == pVM->pVMRC + RT_OFFSETOF(VM, aCpus[0].fLocalForcedActions))
    567567            rec.Core.Key = (AVLPVKEY)PATM_FIXUP_CPU_FF_ACTION;
    568         else
    569         if (*pFixup == CPUMR3GetGuestCpuIdDefRCPtr(pVM))
     568        else if (*pFixup == CPUMR3GetGuestCpuIdPatmDefRCPtr(pVM))
    570569            rec.Core.Key = (AVLPVKEY)PATM_FIXUP_CPUID_DEFAULT;
    571         else
    572         if (*pFixup == CPUMR3GetGuestCpuIdStdRCPtr(pVM))
     570        else if (*pFixup == CPUMR3GetGuestCpuIdPatmStdRCPtr(pVM))
    573571            rec.Core.Key = (AVLPVKEY)PATM_FIXUP_CPUID_STANDARD;
    574         else
    575         if (*pFixup == CPUMR3GetGuestCpuIdExtRCPtr(pVM))
     572        else if (*pFixup == CPUMR3GetGuestCpuIdPatmExtRCPtr(pVM))
    576573            rec.Core.Key = (AVLPVKEY)PATM_FIXUP_CPUID_EXTENDED;
    577         else
    578         if (*pFixup == CPUMR3GetGuestCpuIdCentaurRCPtr(pVM))
     574        else if (*pFixup == CPUMR3GetGuestCpuIdPatmCentaurRCPtr(pVM))
    579575            rec.Core.Key = (AVLPVKEY)PATM_FIXUP_CPUID_CENTAUR;
    580576    }
     
    12861282            {
    12871283            case 0:
    1288                 *pFixup = CPUMR3GetGuestCpuIdDefRCPtr(pVM);
     1284                *pFixup = CPUMR3GetGuestCpuIdPatmDefRCPtr(pVM);
    12891285                break;
    12901286            case 1:
    1291                 *pFixup = CPUMR3GetGuestCpuIdStdRCPtr(pVM);
     1287                *pFixup = CPUMR3GetGuestCpuIdPatmStdRCPtr(pVM);
    12921288                break;
    12931289            case 2:
    1294                 *pFixup = CPUMR3GetGuestCpuIdExtRCPtr(pVM);
     1290                *pFixup = CPUMR3GetGuestCpuIdPatmExtRCPtr(pVM);
    12951291                break;
    12961292            case 3:
    1297                 *pFixup = CPUMR3GetGuestCpuIdCentaurRCPtr(pVM);
     1293                *pFixup = CPUMR3GetGuestCpuIdPatmCentaurRCPtr(pVM);
    12981294                break;
    12991295            }
     
    13151311                break;
    13161312            case PATM_FIXUP_CPUID_DEFAULT:
    1317                 *pFixup = CPUMR3GetGuestCpuIdDefRCPtr(pVM);
     1313                *pFixup = CPUMR3GetGuestCpuIdPatmDefRCPtr(pVM);
    13181314                LogFlow(("Changing cpuid def fixup from %x to %x\n", oldFixup, *pFixup));
    13191315                break;
    13201316            case PATM_FIXUP_CPUID_STANDARD:
    1321                 *pFixup = CPUMR3GetGuestCpuIdStdRCPtr(pVM);
     1317                *pFixup = CPUMR3GetGuestCpuIdPatmStdRCPtr(pVM);
    13221318                LogFlow(("Changing cpuid std fixup from %x to %x\n", oldFixup, *pFixup));
    13231319                break;
    13241320            case PATM_FIXUP_CPUID_EXTENDED:
    1325                 *pFixup = CPUMR3GetGuestCpuIdExtRCPtr(pVM);
     1321                *pFixup = CPUMR3GetGuestCpuIdPatmExtRCPtr(pVM);
    13261322                LogFlow(("Changing cpuid ext fixup from %x to %x\n", oldFixup, *pFixup));
    13271323                break;
    13281324            case PATM_FIXUP_CPUID_CENTAUR:
    1329                 *pFixup = CPUMR3GetGuestCpuIdCentaurRCPtr(pVM);
     1325                *pFixup = CPUMR3GetGuestCpuIdPatmCentaurRCPtr(pVM);
    13301326                LogFlow(("Changing cpuid centaur fixup from %x to %x\n", oldFixup, *pFixup));
    13311327                break;
  • trunk/src/VBox/VMM/VMMRC/CPUMRC.cpp

    r48936 r54674  
    55
    66/*
    7  * Copyright (C) 2006-2012 Oracle Corporation
     7 * Copyright (C) 2006-2015 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
  • trunk/src/VBox/VMM/VMMRC/CPUMRCA.asm

    r52296 r54674  
    44;
    55
    6 ; Copyright (C) 2006-2014 Oracle Corporation
     6;
     7; Copyright (C) 2006-2015 Oracle Corporation
    78;
    89; This file is part of VirtualBox Open Source Edition (OSE), as
  • trunk/src/VBox/VMM/include/CPUMInternal.h

    r54561 r54674  
    55
    66/*
    7  * Copyright (C) 2006-2014 Oracle Corporation
     7 * Copyright (C) 2006-2015 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    487487
    488488    /** The standard set of CpuId leaves. */
    489     CPUMCPUID               aGuestCpuIdStd[6];
     489    CPUMCPUID               aGuestCpuIdPatmStd[6];
    490490    /** The extended set of CpuId leaves. */
    491     CPUMCPUID               aGuestCpuIdExt[10];
     491    CPUMCPUID               aGuestCpuIdPatmExt[10];
    492492    /** The centaur set of CpuId leaves. */
    493     CPUMCPUID               aGuestCpuIdCentaur[4];
     493    CPUMCPUID               aGuestCpuIdPatmCentaur[4];
    494494    /** The default set of CpuId leaves. */
    495     CPUMCPUID               GuestCpuIdDef;
     495    CPUMCPUID               GuestCpuIdPatmDef;
    496496
    497497#if HC_ARCH_BITS == 32
  • trunk/src/VBox/VMM/include/CPUMInternal.mac

    r52419 r54674  
    55
    66;
    7 ; Copyright (C) 2006-2012 Oracle Corporation
     7; Copyright (C) 2006-2015 Oracle Corporation
    88;
    99; This file is part of VirtualBox Open Source Edition (OSE), as
     
    8181
    8282    ; CPUID leafs
    83     .aGuestCpuIdStd       resb    16*6
    84     .aGuestCpuIdExt       resb    16*10
    85     .aGuestCpuIdCentaur   resb    16*4
    86     .GuestCpuIdDef        resb    16
     83    .aGuestCpuIdPatmStd         resb    16*6
     84    .aGuestCpuIdPatmExt         resb    16*10
     85    .aGuestCpuIdPatmCentaur     resb    16*4
     86    .GuestCpuIdPatmDef          resb    16
    8787
    8888%if HC_ARCH_BITS == 32
  • trunk/src/VBox/VMM/testcase/tstVMStruct.h

    r53441 r54674  
    88
    99/*
    10  * Copyright (C) 2006-2014 Oracle Corporation
     10 * Copyright (C) 2006-2015 Oracle Corporation
    1111 *
    1212 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    3737    GEN_CHECK_OFF(CPUM, fPendingRestore);
    3838#endif
    39     GEN_CHECK_OFF(CPUM, aGuestCpuIdStd);
    40     GEN_CHECK_OFF(CPUM, aGuestCpuIdExt);
    41     GEN_CHECK_OFF(CPUM, aGuestCpuIdCentaur);
    42     GEN_CHECK_OFF(CPUM, GuestCpuIdDef);
     39    GEN_CHECK_OFF(CPUM, aGuestCpuIdPatmStd);
     40    GEN_CHECK_OFF(CPUM, aGuestCpuIdPatmExt);
     41    GEN_CHECK_OFF(CPUM, aGuestCpuIdPatmCentaur);
     42    GEN_CHECK_OFF(CPUM, GuestCpuIdPatmDef);
    4343
    4444    GEN_CHECK_SIZE(CPUMCPU); // has .mac
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette