VirtualBox

Changeset 47770 in vbox


Ignore:
Timestamp:
Aug 15, 2013 2:16:59 PM (11 years ago)
Author:
vboxsync
Message:

VMM/HMVMXR0: Hungarian, hex prefixes.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r47766 r47770  
    174174{
    175175    /** The host's rflags/eflags. */
    176     RTCCUINTREG     uEFlags;
     176    RTCCUINTREG     uEflags;
    177177#if HC_ARCH_BITS == 32
    178178    uint32_t        u32Alignment0;
     
    28822882           Let us assert it as such and use 32-bit VMWRITE. */
    28832883        Assert(!(pMixedCtx->rflags.u64 >> 32));
    2884         X86EFLAGS uEFlags = pMixedCtx->eflags;
    2885         uEFlags.u32 &= VMX_EFLAGS_RESERVED_0;                   /* Bits 22-31, 15, 5 & 3 MBZ. */
    2886         uEFlags.u32 |= VMX_EFLAGS_RESERVED_1;                   /* Bit 1 MB1. */
     2884        X86EFLAGS Eflags = pMixedCtx->eflags;
     2885        Eflags.u32 &= VMX_EFLAGS_RESERVED_0;                   /* Bits 22-31, 15, 5 & 3 MBZ. */
     2886        Eflags.u32 |= VMX_EFLAGS_RESERVED_1;                   /* Bit 1 MB1. */
    28872887
    28882888        /*
     
    28942894            Assert(pVCpu->CTX_SUFF(pVM)->hm.s.vmx.pRealModeTSS);
    28952895            Assert(PDMVmmDevHeapIsEnabled(pVCpu->CTX_SUFF(pVM)));
    2896             pVCpu->hm.s.vmx.RealMode.eflags.u32 = uEFlags.u32; /* Save the original eflags of the real-mode guest. */
    2897             uEFlags.Bits.u1VM   = 1;                           /* Set the Virtual 8086 mode bit. */
    2898             uEFlags.Bits.u2IOPL = 0;                           /* Change IOPL to 0, otherwise certain instructions won't fault. */
    2899         }
    2900 
    2901         rc = VMXWriteVmcs32(VMX_VMCS_GUEST_RFLAGS, uEFlags.u32);
     2896            pVCpu->hm.s.vmx.RealMode.Eflags.u32 = Eflags.u32; /* Save the original eflags of the real-mode guest. */
     2897            Eflags.Bits.u1VM   = 1;                            /* Set the Virtual 8086 mode bit. */
     2898            Eflags.Bits.u2IOPL = 0;                            /* Change IOPL to 0, otherwise certain instructions won't fault. */
     2899        }
     2900
     2901        rc = VMXWriteVmcs32(VMX_VMCS_GUEST_RFLAGS, Eflags.u32);
    29022902        AssertRCReturn(rc, rc);
    29032903
    2904         Log4(("Load: VMX_VMCS_GUEST_RFLAGS=%#RX32\n", uEFlags.u32));
     2904        Log4(("Load: VMX_VMCS_GUEST_RFLAGS=%#RX32\n", Eflags.u32));
    29052905        pVCpu->hm.s.fContextUseFlags &= ~HM_CHANGED_GUEST_RFLAGS;
    29062906    }
     
    36753675        if (pVCpu->hm.s.vmx.RealMode.fRealOnV86Active)
    36763676        {
    3677             pVCpu->hm.s.vmx.RealMode.uAttrCS.u = pMixedCtx->cs.Attr.u;
    3678             pVCpu->hm.s.vmx.RealMode.uAttrSS.u = pMixedCtx->ss.Attr.u;
    3679             pVCpu->hm.s.vmx.RealMode.uAttrDS.u = pMixedCtx->ds.Attr.u;
    3680             pVCpu->hm.s.vmx.RealMode.uAttrES.u = pMixedCtx->es.Attr.u;
    3681             pVCpu->hm.s.vmx.RealMode.uAttrFS.u = pMixedCtx->fs.Attr.u;
    3682             pVCpu->hm.s.vmx.RealMode.uAttrGS.u = pMixedCtx->gs.Attr.u;
     3677            pVCpu->hm.s.vmx.RealMode.AttrCS.u = pMixedCtx->cs.Attr.u;
     3678            pVCpu->hm.s.vmx.RealMode.AttrSS.u = pMixedCtx->ss.Attr.u;
     3679            pVCpu->hm.s.vmx.RealMode.AttrDS.u = pMixedCtx->ds.Attr.u;
     3680            pVCpu->hm.s.vmx.RealMode.AttrES.u = pMixedCtx->es.Attr.u;
     3681            pVCpu->hm.s.vmx.RealMode.AttrFS.u = pMixedCtx->fs.Attr.u;
     3682            pVCpu->hm.s.vmx.RealMode.AttrGS.u = pMixedCtx->gs.Attr.u;
    36833683        }
    36843684
     
    43214321    PHMGLOBLCPUINFO pCpu;
    43224322    RTHCPHYS        HCPhysCpuPage;
    4323     RTCCUINTREG     uOldEFlags;
     4323    RTCCUINTREG     uOldEflags;
    43244324
    43254325    AssertReturn(pVM->hm.s.pfnHost32ToGuest64R0, VERR_HM_NO_32_TO_64_SWITCHER);
     
    43374337
    43384338    /* Disable interrupts. */
    4339     uOldEFlags = ASMIntDisableFlags();
     4339    uOldEflags = ASMIntDisableFlags();
    43404340
    43414341#ifdef VBOX_WITH_VMMR0_DISABLE_LAPIC_NMI
     
    43754375    {
    43764376        ASMSetCR4(ASMGetCR4() & ~X86_CR4_VMXE);
    4377         ASMSetFlags(uOldEFlags);
     4377        ASMSetFlags(uOldEflags);
    43784378        return rc2;
    43794379    }
     
    43824382    AssertRC(rc2);
    43834383    Assert(!(ASMGetFlags() & X86_EFL_IF));
    4384     ASMSetFlags(uOldEFlags);
     4384    ASMSetFlags(uOldEflags);
    43854385    return rc;
    43864386}
     
    51545154
    51555155            pMixedCtx->eflags.Bits.u1VM   = 0;
    5156             pMixedCtx->eflags.Bits.u2IOPL = pVCpu->hm.s.vmx.RealMode.eflags.Bits.u2IOPL;
     5156            pMixedCtx->eflags.Bits.u2IOPL = pVCpu->hm.s.vmx.RealMode.Eflags.Bits.u2IOPL;
    51575157        }
    51585158
     
    55795579        if (pVCpu->hm.s.vmx.RealMode.fRealOnV86Active)
    55805580        {
    5581             pMixedCtx->cs.Attr.u = pVCpu->hm.s.vmx.RealMode.uAttrCS.u;
    5582             pMixedCtx->ss.Attr.u = pVCpu->hm.s.vmx.RealMode.uAttrSS.u;
    5583             pMixedCtx->ds.Attr.u = pVCpu->hm.s.vmx.RealMode.uAttrDS.u;
    5584             pMixedCtx->es.Attr.u = pVCpu->hm.s.vmx.RealMode.uAttrES.u;
    5585             pMixedCtx->fs.Attr.u = pVCpu->hm.s.vmx.RealMode.uAttrFS.u;
    5586             pMixedCtx->gs.Attr.u = pVCpu->hm.s.vmx.RealMode.uAttrGS.u;
     5581            pMixedCtx->cs.Attr.u = pVCpu->hm.s.vmx.RealMode.AttrCS.u;
     5582            pMixedCtx->ss.Attr.u = pVCpu->hm.s.vmx.RealMode.AttrSS.u;
     5583            pMixedCtx->ds.Attr.u = pVCpu->hm.s.vmx.RealMode.AttrDS.u;
     5584            pMixedCtx->es.Attr.u = pVCpu->hm.s.vmx.RealMode.AttrES.u;
     5585            pMixedCtx->fs.Attr.u = pVCpu->hm.s.vmx.RealMode.AttrFS.u;
     5586            pMixedCtx->gs.Attr.u = pVCpu->hm.s.vmx.RealMode.AttrGS.u;
    55875587        }
    55885588        pVCpu->hm.s.vmx.fUpdatedGuestState |= HMVMX_UPDATED_GUEST_SEGMENT_REGS;
     
    71197119#ifdef VBOX_WITH_VMMR0_DISABLE_PREEMPTION
    71207120    /* We disable interrupts so that we don't miss any interrupts that would flag preemption (IPI/timers etc.) */
    7121     pVmxTransient->uEFlags = ASMIntDisableFlags();
     7121    pVmxTransient->uEflags = ASMIntDisableFlags();
    71227122    if (RTThreadPreemptIsPending(NIL_RTTHREAD))
    71237123    {
    7124         ASMSetFlags(pVmxTransient->uEFlags);
     7124        ASMSetFlags(pVmxTransient->uEflags);
    71257125        STAM_COUNTER_INC(&pVCpu->hm.s.StatPendingHostIrq);
    71267126        /* Don't use VINF_EM_RAW_INTERRUPT_HYPER as we can't assume the host does kernel preemption. Maybe some day? */
     
    71707170#ifndef VBOX_WITH_VMMR0_DISABLE_PREEMPTION
    71717171    /** @todo I don't see the point of this, VMMR0EntryFast() already disables interrupts for the entire period. */
    7172     pVmxTransient->uEFlags = ASMIntDisableFlags();
     7172    pVmxTransient->uEflags = ASMIntDisableFlags();
    71737173    VMCPU_SET_STATE(pVCpu, VMCPUSTATE_STARTED_EXEC);
    71747174#endif
     
    72817281    VMCPU_SET_STATE(pVCpu, VMCPUSTATE_STARTED_HM);
    72827282
    7283     ASMSetFlags(pVmxTransient->uEFlags);                        /* Enable interrupts. */
     7283    ASMSetFlags(pVmxTransient->uEflags);                        /* Enable interrupts. */
    72847284    pVCpu->hm.s.fResumeVM = true;                               /* Use VMRESUME instead of VMLAUNCH in the next run. */
    72857285
     
    77567756         * RIP and RFLAGS.
    77577757         */
    7758         uint32_t u32EFlags;
     7758        uint32_t u32Eflags;
    77597759#if HC_ARCH_BITS == 64 || defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    77607760        if (HMVMX_IS_64BIT_HOST_MODE())
     
    77797779                              VMX_IGS_RFLAGS_RESERVED);
    77807780            HMVMX_CHECK_BREAK((u64Val & X86_EFL_RA1_MASK), VMX_IGS_RFLAGS_RESERVED1);       /* Bit 1 MB1. */
    7781             u32EFlags = u64Val;
     7781            u32Eflags = u64Val;
    77827782        }
    77837783        else
    77847784#endif
    77857785        {
    7786             rc = VMXReadVmcs32(VMX_VMCS_GUEST_RFLAGS, &u32EFlags);
     7786            rc = VMXReadVmcs32(VMX_VMCS_GUEST_RFLAGS, &u32Eflags);
    77877787            AssertRCBreak(rc);
    7788             HMVMX_CHECK_BREAK(!(u32EFlags & 0xffc08028), VMX_IGS_RFLAGS_RESERVED);          /* Bit 31:22, Bit 15, 5, 3 MBZ. */
    7789             HMVMX_CHECK_BREAK((u32EFlags & X86_EFL_RA1_MASK), VMX_IGS_RFLAGS_RESERVED1);    /* Bit 1 MB1. */
     7788            HMVMX_CHECK_BREAK(!(u32Eflags & 0xffc08028), VMX_IGS_RFLAGS_RESERVED);          /* Bit 31:22, Bit 15, 5, 3 MBZ. */
     7789            HMVMX_CHECK_BREAK((u32Eflags & X86_EFL_RA1_MASK), VMX_IGS_RFLAGS_RESERVED1);    /* Bit 1 MB1. */
    77907790        }
    77917791
     
    77937793            || !(pCtx->cr0 & X86_CR0_PE))
    77947794        {
    7795             HMVMX_CHECK_BREAK(!(u32EFlags & X86_EFL_VM), VMX_IGS_RFLAGS_VM_INVALID);
     7795            HMVMX_CHECK_BREAK(!(u32Eflags & X86_EFL_VM), VMX_IGS_RFLAGS_VM_INVALID);
    77967796        }
    77977797
     
    78987898        HMVMX_CHECK_BREAK(   (pCtx->ldtr.Attr.u & X86DESCATTR_UNUSABLE)
    78997899                          || !(pCtx->ldtr.Sel & X86_SEL_LDT), VMX_IGS_LDTR_TI_INVALID);
    7900         if (!(u32EFlags & X86_EFL_VM))
     7900        if (!(u32Eflags & X86_EFL_VM))
    79017901        {
    79027902            /* CS */
     
    81738173                                | VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE_BLOCK_MOVSS),
    81748174                          VMX_IGS_INTERRUPTIBILITY_STATE_STI_MOVSS_INVALID);
    8175         HMVMX_CHECK_BREAK(   (u32EFlags & X86_EFL_IF)
     8175        HMVMX_CHECK_BREAK(   (u32Eflags & X86_EFL_IF)
    81768176                          || !(u32IntrState & VMX_VMCS_GUEST_INTERRUPTIBILITY_STATE_BLOCK_STI),
    81778177                          VMX_IGS_INTERRUPTIBILITY_STATE_STI_EFL_INVALID);
     
    82278227            || u32ActivityState == VMX_VMCS_GUEST_ACTIVITY_HLT)
    82288228        {
    8229             if (   (u32EFlags & X86_EFL_TF)
     8229            if (   (u32Eflags & X86_EFL_TF)
    82308230                && !(u64DebugCtlMsr & RT_BIT_64(1)))    /* Bit 1 is IA32_DEBUGCTL.BTF. */
    82318231            {
     
    82338233                HMVMX_CHECK_BREAK(u32Val & RT_BIT(14), VMX_IGS_PENDING_DEBUG_XCPT_BS_NOT_SET);
    82348234            }
    8235             if (   !(u32EFlags & X86_EFL_TF)
     8235            if (   !(u32Eflags & X86_EFL_TF)
    82368236                || (u64DebugCtlMsr & RT_BIT_64(1)))     /* Bit 1 is IA32_DEBUGCTL.BTF. */
    82378237            {
     
    1008010080                }
    1008110081
    10082                 /* Get the stack pointer & pop the contents of the stack onto EFlags. */
     10082                /* Get the stack pointer & pop the contents of the stack onto Eflags. */
    1008310083                RTGCPTR   GCPtrStack = 0;
    10084                 X86EFLAGS uEflags;
     10084                X86EFLAGS Eflags;
    1008510085                rc = SELMToFlatEx(pVCpu, DISSELREG_SS, CPUMCTX2CORE(pMixedCtx), pMixedCtx->esp & uMask, SELMTOFLAT_FLAGS_CPL0,
    1008610086                                  &GCPtrStack);
    1008710087                if (RT_SUCCESS(rc))
    1008810088                {
    10089                     Assert(sizeof(uEflags.u32) >= cbParm);
    10090                     uEflags.u32 = 0;
    10091                     rc = PGMPhysRead(pVM, (RTGCPHYS)GCPtrStack, &uEflags.u32, cbParm);
     10089                    Assert(sizeof(Eflags.u32) >= cbParm);
     10090                    Eflags.u32 = 0;
     10091                    rc = PGMPhysRead(pVM, (RTGCPHYS)GCPtrStack, &Eflags.u32, cbParm);
    1009210092                }
    1009310093                if (RT_FAILURE(rc))
     
    1009610096                    break;
    1009710097                }
    10098                 Log4(("POPF %x -> %#RX64 mask=%x RIP=%#RX64\n", uEflags.u, pMixedCtx->rsp, uMask, pMixedCtx->rip));
     10098                Log4(("POPF %#x -> %#RX64 mask=%#x RIP=%#RX64\n", Eflags.u, pMixedCtx->rsp, uMask, pMixedCtx->rip));
    1009910099                pMixedCtx->eflags.u32 =   (pMixedCtx->eflags.u32 & ~(X86_EFL_POPF_BITS & uMask))
    10100                                         | (uEflags.u32 & X86_EFL_POPF_BITS & uMask);
     10100                                        | (Eflags.u32 & X86_EFL_POPF_BITS & uMask);
    1010110101                /* The RF bit is always cleared by POPF; see Intel Instruction reference for POPF. */
    1010210102                pMixedCtx->eflags.Bits.u1RF   = 0;
     
    1013310133                    break;
    1013410134                }
    10135                 X86EFLAGS uEflags;
    10136                 uEflags = pMixedCtx->eflags;
     10135                X86EFLAGS Eflags = pMixedCtx->eflags;
    1013710136                /* The RF & VM bits are cleared on image stored on stack; see Intel Instruction reference for PUSHF. */
    10138                 uEflags.Bits.u1RF = 0;
    10139                 uEflags.Bits.u1VM = 0;
    10140 
    10141                 rc = PGMPhysWrite(pVM, (RTGCPHYS)GCPtrStack, &uEflags.u, cbParm);
     10137                Eflags.Bits.u1RF = 0;
     10138                Eflags.Bits.u1VM = 0;
     10139
     10140                rc = PGMPhysWrite(pVM, (RTGCPHYS)GCPtrStack, &Eflags.u, cbParm);
    1014210141                if (RT_FAILURE(rc))
    1014310142                {
     
    1014510144                    break;
    1014610145                }
    10147                 Log4(("PUSHF %x -> %#RGv\n", uEflags.u, GCPtrStack));
     10146                Log4(("PUSHF %#x -> %#RGv\n", Eflags.u, GCPtrStack));
    1014810147                pMixedCtx->esp               -= cbParm;
    1014910148                pMixedCtx->esp               &= uMask;
  • trunk/src/VBox/VMM/include/HMInternal.h

    r47766 r47770  
    631631        struct
    632632        {
    633             X86DESCATTR                 uAttrCS;
    634             X86DESCATTR                 uAttrDS;
    635             X86DESCATTR                 uAttrES;
    636             X86DESCATTR                 uAttrFS;
    637             X86DESCATTR                 uAttrGS;
    638             X86DESCATTR                 uAttrSS;
    639             X86EFLAGS                   eflags;
     633            X86DESCATTR                 AttrCS;
     634            X86DESCATTR                 AttrDS;
     635            X86DESCATTR                 AttrES;
     636            X86DESCATTR                 AttrFS;
     637            X86DESCATTR                 AttrGS;
     638            X86DESCATTR                 AttrSS;
     639            X86EFLAGS                   Eflags;
    640640            uint32_t                    fRealOnV86Active;
    641641        } RealMode;
     
    649649            RTCPUID                 idEnteredCpu;
    650650            RTCPUID                 idCurrentCpu;
    651             uint32_t                padding;
     651            uint32_t                u32Padding;
    652652        } LastError;
    653653
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