VirtualBox

Changeset 72676 in vbox


Ignore:
Timestamp:
Jun 25, 2018 11:29:04 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
123189
Message:

CPUMAllRegs.cpp: Added a whole bunch more CPUMCTX_EXTRN_ assertions. Fixed buggy CPUMGetGuestFlatPC and CPUMGetGuestFlatSP. bugref:9044

File:
1 edited

Legend:

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

    r72643 r72676  
    8383    Assert(CPUMSELREG_ARE_HIDDEN_PARTS_VALID(a_pVCpu, a_pSReg));
    8484#endif
     85
     86/** @def CPUM_INT_ASSERT_NOT_EXTRN
     87 * Macro for asserting that @a a_fNotExtrn are present.
     88 *
     89 * @param   a_pVCpu         The cross context virtual CPU structure of the calling EMT.
     90 * @param   a_fNotExtrn     Mask of CPUMCTX_EXTRN_XXX bits to check.
     91 */
     92#define CPUM_INT_ASSERT_NOT_EXTRN(a_pVCpu, a_fNotExtrn) \
     93    AssertMsg(!((a_pVCpu)->cpum.s.Guest.fExtrn & (a_fNotExtrn)), \
     94              ("%#RX64; a_fNotExtrn=%#RX64\n", (a_pVCpu)->cpum.s.Guest.fExtrn, (a_fNotExtrn)))
     95
    8596
    8697
     
    738749
    739750    pVCpu->cpum.s.Guest.cr0 = cr0;
     751    pVCpu->cpum.s.Guest.fExtrn &= ~CPUMCTX_EXTRN_CR0;
    740752    return VINF_SUCCESS;
    741753}
     
    745757{
    746758    pVCpu->cpum.s.Guest.cr2 = cr2;
     759    pVCpu->cpum.s.Guest.fExtrn &= ~CPUMCTX_EXTRN_CR2;
    747760    return VINF_SUCCESS;
    748761}
     
    753766    pVCpu->cpum.s.Guest.cr3 = cr3;
    754767    pVCpu->cpum.s.fChanged |= CPUM_CHANGED_CR3;
     768    pVCpu->cpum.s.Guest.fExtrn &= ~CPUMCTX_EXTRN_CR3;
    755769    return VINF_SUCCESS;
    756770}
     
    767781    pVCpu->cpum.s.fChanged |= CPUM_CHANGED_CR4;
    768782    pVCpu->cpum.s.Guest.cr4 = cr4;
     783    pVCpu->cpum.s.Guest.fExtrn &= ~CPUMCTX_EXTRN_CR4;
    769784    return VINF_SUCCESS;
    770785}
     
    774789{
    775790    pVCpu->cpum.s.Guest.eflags.u32 = eflags;
     791    pVCpu->cpum.s.Guest.fExtrn &= ~CPUMCTX_EXTRN_RFLAGS;
    776792    return VINF_SUCCESS;
    777793}
     
    886902{
    887903    pVCpu->cpum.s.Guest.msrEFER = val;
     904    pVCpu->cpum.s.Guest.fExtrn &= ~CPUMCTX_EXTRN_EFER;
    888905}
    889906
     
    891908VMMDECL(RTGCPTR) CPUMGetGuestIDTR(PVMCPU pVCpu, uint16_t *pcbLimit)
    892909{
     910    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_IDTR);
    893911    if (pcbLimit)
    894912        *pcbLimit = pVCpu->cpum.s.Guest.idtr.cbIdt;
     
    899917VMMDECL(RTSEL) CPUMGetGuestTR(PVMCPU pVCpu, PCPUMSELREGHID pHidden)
    900918{
     919    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_TR);
    901920    if (pHidden)
    902921        *pHidden = pVCpu->cpum.s.Guest.tr;
     
    907926VMMDECL(RTSEL) CPUMGetGuestCS(PVMCPU pVCpu)
    908927{
     928    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CS);
    909929    return pVCpu->cpum.s.Guest.cs.Sel;
    910930}
     
    913933VMMDECL(RTSEL) CPUMGetGuestDS(PVMCPU pVCpu)
    914934{
     935    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_DS);
    915936    return pVCpu->cpum.s.Guest.ds.Sel;
    916937}
     
    919940VMMDECL(RTSEL) CPUMGetGuestES(PVMCPU pVCpu)
    920941{
     942    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_ES);
    921943    return pVCpu->cpum.s.Guest.es.Sel;
    922944}
     
    925947VMMDECL(RTSEL) CPUMGetGuestFS(PVMCPU pVCpu)
    926948{
     949    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_FS);
    927950    return pVCpu->cpum.s.Guest.fs.Sel;
    928951}
     
    931954VMMDECL(RTSEL) CPUMGetGuestGS(PVMCPU pVCpu)
    932955{
     956    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_GS);
    933957    return pVCpu->cpum.s.Guest.gs.Sel;
    934958}
     
    937961VMMDECL(RTSEL) CPUMGetGuestSS(PVMCPU pVCpu)
    938962{
     963    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_SS);
    939964    return pVCpu->cpum.s.Guest.ss.Sel;
    940965}
     
    943968VMMDECL(uint64_t)   CPUMGetGuestFlatPC(PVMCPU pVCpu)
    944969{
     970    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RIP | CPUMCTX_EXTRN_CS | CPUMCTX_EXTRN_EFER);
    945971    CPUMSELREG_LAZY_LOAD_HIDDEN_PARTS(pVCpu, &pVCpu->cpum.s.Guest.cs);
    946972    if (   !CPUMIsGuestInLongMode(pVCpu)
    947         || pVCpu->cpum.s.Guest.cs.Attr.n.u1Long)
     973        || !pVCpu->cpum.s.Guest.cs.Attr.n.u1Long)
    948974        return pVCpu->cpum.s.Guest.eip + (uint32_t)pVCpu->cpum.s.Guest.cs.u64Base;
    949975    return pVCpu->cpum.s.Guest.rip + pVCpu->cpum.s.Guest.cs.u64Base;
     
    953979VMMDECL(uint64_t)   CPUMGetGuestFlatSP(PVMCPU pVCpu)
    954980{
     981    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RSP | CPUMCTX_EXTRN_SS | CPUMCTX_EXTRN_CS | CPUMCTX_EXTRN_EFER);
    955982    CPUMSELREG_LAZY_LOAD_HIDDEN_PARTS(pVCpu, &pVCpu->cpum.s.Guest.ss);
    956983    if (   !CPUMIsGuestInLongMode(pVCpu)
    957         || pVCpu->cpum.s.Guest.ss.Attr.n.u1Long)
     984        || !pVCpu->cpum.s.Guest.cs.Attr.n.u1Long)
    958985        return pVCpu->cpum.s.Guest.eip + (uint32_t)pVCpu->cpum.s.Guest.ss.u64Base;
    959986    return pVCpu->cpum.s.Guest.rip + pVCpu->cpum.s.Guest.ss.u64Base;
     
    963990VMMDECL(RTSEL) CPUMGetGuestLDTR(PVMCPU pVCpu)
    964991{
     992    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_LDTR);
    965993    return pVCpu->cpum.s.Guest.ldtr.Sel;
    966994}
     
    969997VMMDECL(RTSEL) CPUMGetGuestLdtrEx(PVMCPU pVCpu, uint64_t *pGCPtrBase, uint32_t *pcbLimit)
    970998{
     999    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_LDTR);
    9711000    *pGCPtrBase = pVCpu->cpum.s.Guest.ldtr.u64Base;
    9721001    *pcbLimit   = pVCpu->cpum.s.Guest.ldtr.u32Limit;
     
    9771006VMMDECL(uint64_t) CPUMGetGuestCR0(PVMCPU pVCpu)
    9781007{
    979     Assert(!(pVCpu->cpum.s.Guest.fExtrn & CPUMCTX_EXTRN_CR0));
     1008    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0);
    9801009    return pVCpu->cpum.s.Guest.cr0;
    9811010}
     
    9841013VMMDECL(uint64_t) CPUMGetGuestCR2(PVMCPU pVCpu)
    9851014{
    986     Assert(!(pVCpu->cpum.s.Guest.fExtrn & CPUMCTX_EXTRN_CR2));
     1015    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR2);
    9871016    return pVCpu->cpum.s.Guest.cr2;
    9881017}
     
    9911020VMMDECL(uint64_t) CPUMGetGuestCR3(PVMCPU pVCpu)
    9921021{
    993     Assert(!(pVCpu->cpum.s.Guest.fExtrn & CPUMCTX_EXTRN_CR3));
     1022    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR3);
    9941023    return pVCpu->cpum.s.Guest.cr3;
    9951024}
     
    9981027VMMDECL(uint64_t) CPUMGetGuestCR4(PVMCPU pVCpu)
    9991028{
    1000     Assert(!(pVCpu->cpum.s.Guest.fExtrn & CPUMCTX_EXTRN_CR4));
     1029    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR4);
    10011030    return pVCpu->cpum.s.Guest.cr4;
    10021031}
     
    10151044VMMDECL(void) CPUMGetGuestGDTR(PVMCPU pVCpu, PVBOXGDTR pGDTR)
    10161045{
     1046    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_GDTR);
    10171047    *pGDTR = pVCpu->cpum.s.Guest.gdtr;
    10181048}
     
    10211051VMMDECL(uint32_t) CPUMGetGuestEIP(PVMCPU pVCpu)
    10221052{
    1023     Assert(!(pVCpu->cpum.s.Guest.fExtrn & CPUMCTX_EXTRN_RIP));
     1053    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RIP);
    10241054    return pVCpu->cpum.s.Guest.eip;
    10251055}
     
    10281058VMMDECL(uint64_t) CPUMGetGuestRIP(PVMCPU pVCpu)
    10291059{
    1030     Assert(!(pVCpu->cpum.s.Guest.fExtrn & CPUMCTX_EXTRN_RIP));
     1060    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RIP);
    10311061    return pVCpu->cpum.s.Guest.rip;
    10321062}
     
    10351065VMMDECL(uint32_t) CPUMGetGuestEAX(PVMCPU pVCpu)
    10361066{
     1067    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RAX);
    10371068    return pVCpu->cpum.s.Guest.eax;
    10381069}
     
    10411072VMMDECL(uint32_t) CPUMGetGuestEBX(PVMCPU pVCpu)
    10421073{
     1074    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RBX);
    10431075    return pVCpu->cpum.s.Guest.ebx;
    10441076}
     
    10471079VMMDECL(uint32_t) CPUMGetGuestECX(PVMCPU pVCpu)
    10481080{
     1081    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RCX);
    10491082    return pVCpu->cpum.s.Guest.ecx;
    10501083}
     
    10531086VMMDECL(uint32_t) CPUMGetGuestEDX(PVMCPU pVCpu)
    10541087{
     1088    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RDX);
    10551089    return pVCpu->cpum.s.Guest.edx;
    10561090}
     
    10591093VMMDECL(uint32_t) CPUMGetGuestESI(PVMCPU pVCpu)
    10601094{
     1095    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RSI);
    10611096    return pVCpu->cpum.s.Guest.esi;
    10621097}
     
    10651100VMMDECL(uint32_t) CPUMGetGuestEDI(PVMCPU pVCpu)
    10661101{
     1102    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RDI);
    10671103    return pVCpu->cpum.s.Guest.edi;
    10681104}
     
    10711107VMMDECL(uint32_t) CPUMGetGuestESP(PVMCPU pVCpu)
    10721108{
     1109    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RSP);
    10731110    return pVCpu->cpum.s.Guest.esp;
    10741111}
     
    10771114VMMDECL(uint32_t) CPUMGetGuestEBP(PVMCPU pVCpu)
    10781115{
     1116    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RBP);
    10791117    return pVCpu->cpum.s.Guest.ebp;
    10801118}
     
    10831121VMMDECL(uint32_t) CPUMGetGuestEFlags(PVMCPU pVCpu)
    10841122{
     1123    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_RFLAGS);
    10851124    return pVCpu->cpum.s.Guest.eflags.u32;
    10861125}
     
    10921131    {
    10931132        case DISCREG_CR0:
     1133            CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0);
    10941134            *pValue = pVCpu->cpum.s.Guest.cr0;
    10951135            break;
    10961136
    10971137        case DISCREG_CR2:
     1138            CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR2);
    10981139            *pValue = pVCpu->cpum.s.Guest.cr2;
    10991140            break;
    11001141
    11011142        case DISCREG_CR3:
     1143            CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR3);
    11021144            *pValue = pVCpu->cpum.s.Guest.cr3;
    11031145            break;
    11041146
    11051147        case DISCREG_CR4:
     1148            CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR4);
    11061149            *pValue = pVCpu->cpum.s.Guest.cr4;
    11071150            break;
     
    11091152        case DISCREG_CR8:
    11101153        {
     1154            CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_APIC_TPR);
    11111155            uint8_t u8Tpr;
    11121156            int rc = APICGetTpr(pVCpu, &u8Tpr, NULL /* pfPending */, NULL /* pu8PendingIrq */);
     
    11301174VMMDECL(uint64_t) CPUMGetGuestDR0(PVMCPU pVCpu)
    11311175{
     1176    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_DR0_DR3);
    11321177    return pVCpu->cpum.s.Guest.dr[0];
    11331178}
     
    11361181VMMDECL(uint64_t) CPUMGetGuestDR1(PVMCPU pVCpu)
    11371182{
     1183    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_DR0_DR3);
    11381184    return pVCpu->cpum.s.Guest.dr[1];
    11391185}
     
    11421188VMMDECL(uint64_t) CPUMGetGuestDR2(PVMCPU pVCpu)
    11431189{
     1190    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_DR0_DR3);
    11441191    return pVCpu->cpum.s.Guest.dr[2];
    11451192}
     
    11481195VMMDECL(uint64_t) CPUMGetGuestDR3(PVMCPU pVCpu)
    11491196{
     1197    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_DR0_DR3);
    11501198    return pVCpu->cpum.s.Guest.dr[3];
    11511199}
     
    11541202VMMDECL(uint64_t) CPUMGetGuestDR6(PVMCPU pVCpu)
    11551203{
     1204    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_DR6);
    11561205    return pVCpu->cpum.s.Guest.dr[6];
    11571206}
     
    11601209VMMDECL(uint64_t) CPUMGetGuestDR7(PVMCPU pVCpu)
    11611210{
     1211    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_DR7);
    11621212    return pVCpu->cpum.s.Guest.dr[7];
    11631213}
     
    11661216VMMDECL(int) CPUMGetGuestDRx(PVMCPU pVCpu, uint32_t iReg, uint64_t *pValue)
    11671217{
     1218    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_DR_MASK);
    11681219    AssertReturn(iReg <= DISDREG_DR7, VERR_INVALID_PARAMETER);
    11691220    /* DR4 is an alias for DR6, and DR5 is an alias for DR7. */
     
    11771228VMMDECL(uint64_t) CPUMGetGuestEFER(PVMCPU pVCpu)
    11781229{
     1230    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_EFER);
    11791231    return pVCpu->cpum.s.Guest.msrEFER;
    11801232}
     
    18221874VMM_INT_DECL(int)   CPUMSetGuestXcr0(PVMCPU pVCpu, uint64_t uNewValue)
    18231875{
     1876    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_XCRx);
    18241877    if (   (uNewValue & ~pVCpu->CTX_SUFF(pVM)->cpum.s.fXStateGuestMask) == 0
    18251878        /* The X87 bit cannot be cleared. */
     
    18721925VMMDECL(bool) CPUMIsGuestNXEnabled(PVMCPU pVCpu)
    18731926{
     1927    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_EFER);
    18741928    return !!(pVCpu->cpum.s.Guest.msrEFER & MSR_K6_EFER_NXE);
    18751929}
     
    18841938VMMDECL(bool) CPUMIsGuestPageSizeExtEnabled(PVMCPU pVCpu)
    18851939{
     1940    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR4);
    18861941    /* PAE or AMD64 implies support for big pages regardless of CR4.PSE */
    18871942    return !!(pVCpu->cpum.s.Guest.cr4 & (X86_CR4_PSE | X86_CR4_PAE));
     
    18971952VMMDECL(bool) CPUMIsGuestPagingEnabled(PVMCPU pVCpu)
    18981953{
     1954    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0);
    18991955    return !!(pVCpu->cpum.s.Guest.cr0 & X86_CR0_PG);
    19001956}
     
    19091965VMMDECL(bool) CPUMIsGuestR0WriteProtEnabled(PVMCPU pVCpu)
    19101966{
     1967    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0);
    19111968    return !!(pVCpu->cpum.s.Guest.cr0 & X86_CR0_WP);
    19121969}
     
    19211978VMMDECL(bool) CPUMIsGuestInRealMode(PVMCPU pVCpu)
    19221979{
     1980    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0);
    19231981    return !(pVCpu->cpum.s.Guest.cr0 & X86_CR0_PE);
    19241982}
     
    19331991VMMDECL(bool) CPUMIsGuestInRealOrV86Mode(PVMCPU pVCpu)
    19341992{
     1993    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_RFLAGS);
    19351994    return !(pVCpu->cpum.s.Guest.cr0 & X86_CR0_PE)
    19361995        || pVCpu->cpum.s.Guest.eflags.Bits.u1VM; /** @todo verify that this cannot be set in long mode. */
     
    19462005VMMDECL(bool) CPUMIsGuestInProtectedMode(PVMCPU pVCpu)
    19472006{
     2007    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0);
    19482008    return !!(pVCpu->cpum.s.Guest.cr0 & X86_CR0_PE);
    19492009}
     
    19582018VMMDECL(bool) CPUMIsGuestInPagedProtectedMode(PVMCPU pVCpu)
    19592019{
     2020    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0);
    19602021    return (pVCpu->cpum.s.Guest.cr0 & (X86_CR0_PE | X86_CR0_PG)) == (X86_CR0_PE | X86_CR0_PG);
    19612022}
     
    19702031VMMDECL(bool) CPUMIsGuestInLongMode(PVMCPU pVCpu)
    19712032{
     2033    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_EFER);
    19722034    return (pVCpu->cpum.s.Guest.msrEFER & MSR_K6_EFER_LMA) == MSR_K6_EFER_LMA;
    19732035}
     
    19822044VMMDECL(bool) CPUMIsGuestInPAEMode(PVMCPU pVCpu)
    19832045{
     2046    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR4 | CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_EFER);
    19842047    /* Intel mentions EFER.LMA and EFER.LME in different parts of their spec. We shall use EFER.LMA rather
    19852048       than EFER.LME as it reflects if the CPU has entered paging with EFER.LME set.  */
     
    19982061VMMDECL(bool) CPUMIsGuestIn64BitCode(PVMCPU pVCpu)
    19992062{
     2063    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CS | CPUMCTX_EXTRN_EFER);
    20002064    if (!CPUMIsGuestInLongMode(pVCpu))
    20012065        return false;
     
    24502514     *         RPL = CPL.  Weird.
    24512515     */
    2452     Assert(!(pVCpu->cpum.s.Guest.fExtrn & (CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_SS)));
     2516    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_SS);
    24532517    uint32_t uCpl;
    24542518    if (pVCpu->cpum.s.Guest.cr0 & X86_CR0_PE)
     
    24982562VMMDECL(CPUMMODE) CPUMGetGuestMode(PVMCPU pVCpu)
    24992563{
     2564    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_EFER);
    25002565    CPUMMODE enmMode;
    25012566    if (!(pVCpu->cpum.s.Guest.cr0 & X86_CR0_PE))
     
    25182583VMMDECL(uint32_t)       CPUMGetGuestCodeBits(PVMCPU pVCpu)
    25192584{
     2585    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_EFER | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_CS);
     2586
    25202587    if (!(pVCpu->cpum.s.Guest.cr0 & X86_CR0_PE))
    25212588        return 16;
     
    25412608VMMDECL(DISCPUMODE)     CPUMGetGuestDisMode(PVMCPU pVCpu)
    25422609{
     2610    CPUM_INT_ASSERT_NOT_EXTRN(pVCpu, CPUMCTX_EXTRN_CR0 | CPUMCTX_EXTRN_EFER | CPUMCTX_EXTRN_RFLAGS | CPUMCTX_EXTRN_CS);
     2611
    25432612    if (!(pVCpu->cpum.s.Guest.cr0 & X86_CR0_PE))
    25442613        return DISCPUMODE_16BIT;
Note: See TracChangeset for help on using the changeset viewer.

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