VirtualBox

Changeset 41904 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jun 24, 2012 1:16:49 AM (13 years ago)
Author:
vboxsync
Message:

CPUM: Fixed saved state bustage. Got two padding equally wrong and shifted the registers inbetween...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/CPUM.cpp

    r41903 r41904  
    8787#define CPUM_SAVED_STATE_VERSION_VER1_6         6
    8888
     89//#define CPUM_WITH_CHANGED_CPUMCTX
    8990
    9091/*******************************************************************************
     
    186187    SSMFIELD_ENTRY_OLD(              dsPadding, sizeof(uint16_t)),
    187188    SSMFIELD_ENTRY(         CPUMCTX, cs),
    188     SSMFIELD_ENTRY_OLD(              csPadding, sizeof(uint16_t)),
     189    SSMFIELD_ENTRY_OLD(              csPadding, sizeof(uint16_t)*3),
    189190    SSMFIELD_ENTRY(         CPUMCTX, rflags),
    190191    SSMFIELD_ENTRY(         CPUMCTX, rip),
     
    236237    SSMFIELD_ENTRY_OLD(              ldtrPadding, sizeof(uint16_t)),
    237238    SSMFIELD_ENTRY(         CPUMCTX, tr),
    238     SSMFIELD_ENTRY(         CPUMCTX, trPadding),
     239    SSMFIELD_ENTRY_OLD(              trPadding, sizeof(uint16_t)),
    239240    SSMFIELD_ENTRY(         CPUMCTX, SysEnter.cs),
    240241    SSMFIELD_ENTRY(         CPUMCTX, SysEnter.eip),
     
    316317    SSMFIELD_ENTRY_OLD(                  dsPadding, sizeof(uint16_t)),
    317318    SSMFIELD_ENTRY(             CPUMCTX, cs),
    318     SSMFIELD_ENTRY_OLD(                  csPadding, sizeof(uint16_t)),
     319    SSMFIELD_ENTRY_OLD(                  csPadding, sizeof(uint16_t)*3),
    319320    SSMFIELD_ENTRY(             CPUMCTX, rflags),
    320321    SSMFIELD_ENTRY(             CPUMCTX, rip),
     
    22252226    {
    22262227        PVMCPU pVCpu = &pVM->aCpus[i];
     2228#ifdef CPUM_WITH_CHANGED_CPUMCTX
     2229        SSMR3PutStructEx(pSSM, &pVCpu->cpum.s.Hyper, sizeof(pVCpu->cpum.s.Hyper), SSMSTRUCT_FLAGS_MEM_BAND_AID_RELAXED,
     2230                         g_aCpumCtxFields, NULL);
     2231#else
    22272232        SSMR3PutStructEx(pSSM, &pVCpu->cpum.s.Hyper, sizeof(pVCpu->cpum.s.Hyper), SSMSTRUCT_FLAGS_MEM_BAND_AID,
    22282233                         g_aCpumCtxFields, NULL);
     2234#endif
    22292235    }
    22302236
     
    22352241        PVMCPU pVCpu = &pVM->aCpus[i];
    22362242
     2243#ifdef CPUM_WITH_CHANGED_CPUMCTX
     2244        SSMR3PutStructEx(pSSM, &pVCpu->cpum.s.Guest, sizeof(pVCpu->cpum.s.Guest), SSMSTRUCT_FLAGS_MEM_BAND_AID_RELAXED,
     2245                         g_aCpumCtxFields, NULL);
     2246#else
    22372247        SSMR3PutStructEx(pSSM, &pVCpu->cpum.s.Guest, sizeof(pVCpu->cpum.s.Guest), SSMSTRUCT_FLAGS_MEM_BAND_AID,
    22382248                         g_aCpumCtxFields, NULL);
     2249#endif
    22392250        SSMR3PutU32(pSSM, pVCpu->cpum.s.fUseFlags);
    22402251        SSMR3PutU32(pSSM, pVCpu->cpum.s.fChanged);
     
    22962307        uint32_t    fLoad   = 0;
    22972308        if (uVersion <= CPUM_SAVED_STATE_VERSION_MEM)
     2309#ifdef CPUM_WITH_CHANGED_CPUMCTX
     2310            fLoad = SSMSTRUCT_FLAGS_MEM_BAND_AID_RELAXED;
     2311#else
    22982312            fLoad = SSMSTRUCT_FLAGS_MEM_BAND_AID;
     2313#endif
    22992314
    23002315        /*
     
    38893904}
    38903905
    3891 #ifdef DEBUG
    3892 
    3893 /**
    3894  * Debug helper - Saves guest context on raw mode entry (for fatal dump)
    3895  *
    3896  * @internal
    3897  */
    3898 VMMR3DECL(void) CPUMR3SaveEntryCtx(PVM pVM)
    3899 {
    3900     /** @todo SMP support!! */
    3901     pVM->cpum.s.GuestEntry = *CPUMQueryGuestCtxPtr(VMMGetCpu(pVM));
    3902 }
    3903 
    3904 #endif /* DEBUG */
     3906
    39053907
    39063908/**
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