VirtualBox

Changeset 9656 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jun 12, 2008 11:56:51 AM (17 years ago)
Author:
vboxsync
Message:

Changed u1Reserved to u1Long in the selector attributes field.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/DBGFDisas.cpp

    r9421 r9656  
    103103    int rc = DISCoreOneEx(GCPtr,
    104104                          pSelInfo->Raw.Gen.u1DefBig
    105                           ? enmMode >= PGMMODE_AMD64 && pSelInfo->Raw.Gen.u1Reserved
     105                          ? enmMode >= PGMMODE_AMD64 && pSelInfo->Raw.Gen.u1Long
    106106                          ? CPUMODE_64BIT
    107107                          : CPUMODE_32BIT
  • trunk/src/VBox/VMM/SELM.cpp

    r9531 r9656  
    265265    pDesc->Gen.u1Present        = 1;
    266266    pDesc->Gen.u1Available      = 0;
    267     pDesc->Gen.u1Reserved       = 0;
     267    pDesc->Gen.u1Long           = 0;
    268268    pDesc->Gen.u1DefBig         = 1; /* def 32 bit */
    269269    pDesc->Gen.u1Granularity    = 1; /* 4KB limit */
     
    281281    pDesc->Gen.u1Present        = 1;
    282282    pDesc->Gen.u1Available      = 0;
    283     pDesc->Gen.u1Reserved       = 0;
     283    pDesc->Gen.u1Long           = 0;
    284284    pDesc->Gen.u1DefBig         = 1; /* big */
    285285    pDesc->Gen.u1Granularity    = 1; /* 4KB limit */
     
    297297    pDesc->Gen.u1Present        = 1;
    298298    pDesc->Gen.u1Available      = 0;
    299     pDesc->Gen.u1Reserved       = 1; /* The Long (L) attribute bit. */
     299    pDesc->Gen.u1Long           = 1; /* The Long (L) attribute bit. */
    300300    pDesc->Gen.u1DefBig         = 0; /* With L=1 this must be 0. */
    301301    pDesc->Gen.u1Granularity    = 1; /* 4KB limit */
     
    316316    pDesc->Gen.u1Present        = 1;
    317317    pDesc->Gen.u1Available      = 0;
    318     pDesc->Gen.u1Reserved       = 0;
     318    pDesc->Gen.u1Long           = 0;
    319319    pDesc->Gen.u1DefBig         = 0;
    320320    pDesc->Gen.u1Granularity    = 0; /* byte limit */
     
    335335    pDesc->Gen.u1Present        = 1;
    336336    pDesc->Gen.u1Available      = 0;
    337     pDesc->Gen.u1Reserved       = 0;
     337    pDesc->Gen.u1Long           = 0;
    338338    pDesc->Gen.u1DefBig         = 0;
    339339    pDesc->Gen.u1Granularity    = 0; /* byte limit */
     
    11921192        pDesc->Gen.u8BaseHigh2  = RT_BYTE4(GCPtrShadowLDT);
    11931193        pDesc->Gen.u1Available  = 0;
    1194         pDesc->Gen.u1Reserved   = 0;
     1194        pDesc->Gen.u1Long       = 0;
    11951195        if (cbLdt > 0xffff)
    11961196        {
  • trunk/src/VBox/VMM/VMMAll/EMAll.cpp

    r9651 r9656  
    20342034    uint64_t uTicks = TMCpuTickGet(pVM);
    20352035
     2036    /* Same behaviour in 32 & 64 bits mode */
    20362037    pRegFrame->eax = uTicks;
    20372038    pRegFrame->edx = (uTicks >> 32ULL);
  • trunk/src/VBox/VMM/VMMAll/SELMAll.cpp

    r9421 r9656  
    8888SELMDECL(RTGCPTR) SELMToFlat(PVM pVM, X86EFLAGS eflags, RTSEL Sel, CPUMSELREGHID *pHiddenSel, RTGCPTR Addr)
    8989{
     90    Assert(!CPUMIsGuestInLongMode(pVM));    /** @todo */
    9091    Assert(pHiddenSel || !CPUMAreHiddenSelRegsValid(pVM));
    9192
     
    131132SELMDECL(int) SELMToFlatEx(PVM pVM, X86EFLAGS eflags, RTSEL Sel, RTGCPTR Addr, CPUMSELREGHID *pHiddenSel, unsigned fFlags, PRTGCPTR ppvGC, uint32_t *pcb)
    132133{
     134    Assert(!CPUMIsGuestInLongMode(pVM));    /** @todo */
    133135    /*
    134136     * Deal with real & v86 mode first.
     
    450452                    )
    451453            {
     454                /* 64 bits mode: CS, DS, ES and SS are treated as if each segment base is 0 (Intel® 64 and IA-32 Architectures Software Developer's Manual: 3.4.2.1). */
     455                if (    CPUMIsGuestInLongMode(pVM)
     456                    &&  pHidCS->Attr.n.u1Long)
     457                {
     458                    *ppvFlat = Addr;
     459                    return VINF_SUCCESS;
     460                }
     461
    452462                /*
    453463                 * Limit check. Note that the limit in the hidden register is the
    454464                 * final value. The granularity bit was included in its calculation.
    455465                 */
    456                 uint32_t    u32Limit = pHidCS->u32Limit;
     466                uint32_t u32Limit = pHidCS->u32Limit;
    457467                if ((RTGCUINTPTR)Addr <= u32Limit)
    458468                {
     
    615625}
    616626
    617 
     627#ifndef IN_RING0
    618628/**
    619629 * Gets ss:esp for ring1 in main Hypervisor's TSS.
     
    690700    return VINF_SUCCESS;
    691701}
    692 
     702#endif
    693703
    694704/**
  • trunk/src/VBox/VMM/VMMTests.cpp

    r9421 r9656  
    445445            pHyperCtx->reg##Hid.Attr.n.u2Dpl         = selInfo.Raw.Gen.u2Dpl;           \
    446446            pHyperCtx->reg##Hid.Attr.n.u1DescType    = selInfo.Raw.Gen.u1DescType;      \
    447             pHyperCtx->reg##Hid.Attr.n.u1Reserved    = selInfo.Raw.Gen.u1Reserved;      \
     447            pHyperCtx->reg##Hid.Attr.n.u1Long        = selInfo.Raw.Gen.u1Long;          \
    448448        }
    449449
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