VirtualBox

Changeset 2181 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Apr 18, 2007 2:27:49 PM (18 years ago)
Author:
vboxsync
Message:

SELMValidateAndConvertCSAddr correction

File:
1 edited

Legend:

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

    r2179 r2181  
    409409SELMDECL(int) SELMValidateAndConvertCSAddr(PVM pVM, X86EFLAGS eflags, RTSEL SelCPL, RTSEL SelCS, CPUMSELREGHID *pHiddenCSSel, RTGCPTR Addr, PRTGCPTR ppvFlat)
    410410{
     411    /*
     412     * Deal with real & v86 mode first.
     413     */
     414    if (    CPUMIsGuestInRealMode(pVM)
     415        ||  eflags.Bits.u1VM)
     416    {
     417        if (ppvFlat)
     418        {
     419            RTGCUINTPTR uFlat;
     420
     421            if (!CPUMAreHiddenSelRegsValid(pVM))
     422                uFlat = ((RTGCUINTPTR)Addr & 0xffff) + ((RTGCUINTPTR)SelCS << 4);
     423            else
     424                uFlat = pHiddenCSSel->u32Base;
     425
     426            *ppvFlat = (RTGCPTR)uFlat;
     427        }
     428        return VINF_SUCCESS;
     429    }
     430
    411431    if (!CPUMAreHiddenSelRegsValid(pVM))
    412     {
    413         /*
    414          * Deal with real & v86 mode first.
    415          */
    416         if (    CPUMIsGuestInRealMode(pVM)
    417             ||  eflags.Bits.u1VM)
    418         {
    419             if (ppvFlat)
    420             {
    421                 RTGCUINTPTR uFlat = ((RTGCUINTPTR)Addr & 0xffff) + ((RTGCUINTPTR)SelCS << 4);
    422                 *ppvFlat = (RTGCPTR)uFlat;
    423             }
    424             return VINF_SUCCESS;
    425         }
    426432        return selmValidateAndConvertCSAddr(pVM, SelCPL, SelCS, Addr, ppvFlat);
    427     }
    428433
    429434    /*
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