VirtualBox

Changeset 520 in vbox


Ignore:
Timestamp:
Feb 1, 2007 8:23:43 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
18129
Message:

64-bit alignment.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PATM/PATMInternal.h

    r369 r520  
    224224    uint32_t        uOpMode;
    225225
     226    GCPTRTYPE(uint8_t *)  pPrivInstrGC;    //GC pointer of privileged instruction
    226227    HCPTRTYPE(uint8_t *)  pPrivInstrHC;    //HC pointer of privileged instruction
    227     GCPTRTYPE(uint8_t *)  pPrivInstrGC;    //GC pointer of privileged instruction
    228228    uint8_t         aPrivInstr[MAX_INSTR_SIZE];
    229229    uint32_t        cbPrivInstr;
     
    237237    uint32_t        cbPatchBlockSize;
    238238    uint32_t        uCurPatchOffset;
     239#if HC_ARCH_BITS == 64
     240    uint32_t        Alignment0;         /**< Align flags correctly. */
     241#endif
    239242
    240243    uint64_t        flags;
     
    251254
    252255    /* Tree of jumps inside the generated patch code. */
     256    int32_t         nrJumpRecs;
    253257    HCPTRTYPE(PAVLPVNODECORE) JumpTree;
    254     int32_t         nrJumpRecs;
    255258
    256259    /**
     
    261264    HCPTRTYPE(PAVLGCPTRNODECORE) Guest2PatchAddrTree;
    262265    uint32_t                  nrPatch2GuestRecs;
     266#if HC_ARCH_BITS == 64
     267    uint32_t        Alignment1;
     268#endif
    263269
    264270    // Cache record for PATMGCVirtToHCVirt
     
    266272
    267273    /* Temporary information during patch creation. Don't waste hypervisor memory for this. */
    268     PPATCHINFOTEMP pTempInfo;
     274    HCPTRTYPE(PPATCHINFOTEMP) pTempInfo;
    269275
    270276    /* Count the number of writes to the corresponding guest code. */
     
    282288    /* First opcode byte, that's overwritten when a patch is marked dirty. */
    283289    uint8_t         bDirtyOpcode;
     290    uint8_t         Alignment2[7];      /**< Align the structure size on a 8-byte boundrary. */
    284291} PATCHINFO, *PPATCHINFO;
    285292
     
    363370
    364371    /* GC PATM state pointers */
     372    HCPTRTYPE(PPATMGCSTATE) pGCStateHC;
    365373    GCPTRTYPE(PPATMGCSTATE) pGCStateGC;
    366     HCPTRTYPE(PPATMGCSTATE) pGCStateHC;
    367374
    368375    /** PATM stack page for call instruction execution. (2 parts: one for our private stack and one to store the original return address */
     
    393400
    394401    /** Pointer to the patch tree for instructions replaced by 'int 3'. */
     402    GCPTRTYPE(PPATMTREES)   PatchLookupTreeGC;
    395403    HCPTRTYPE(PPATMTREES)   PatchLookupTreeHC;
    396     GCPTRTYPE(PPATMTREES)   PatchLookupTreeGC;
    397404
    398405    /** Global PATM lookup and call function (used by call patches). */
     
    406413
    407414    /** Fake patch record for global functions. */
    408     PPATMPATCHREC          pGlobalPatchRec;
     415    HCPTRTYPE(PPATMPATCHREC) pGlobalPatchRec;
    409416
    410417    /** Pointer to original sysenter handler */
     
    428435    struct
    429436    {
    430         PSSMHANDLE          pSSM;
     437        HCPTRTYPE(PSSMHANDLE) pSSM;
    431438        uint32_t            cPatches;
     439#if HC_ARCH_BITS == 64
     440        uint32_t            Alignment0; /**< Align the structure size on a 8-byte boundrary. */
     441#endif
    432442    } savedstate;
    433443
     
    484494    STAMCOUNTER             StatFunctionLookupInsert;
    485495    uint32_t                StatU32FunctionMaxSlotsUsed;
     496    uint32_t                Alignment0; /**< Align the structure size on a 8-byte boundrary. */
    486497} PATM, *PPATM;
    487498
  • trunk/src/VBox/VMM/testcase/tstVMStructGC.cpp

    r518 r520  
    8383    GEN_CHECK_SIZE(CPUMCTX);
    8484    GEN_CHECK_SIZE(CPUMCTXCORE);
     85    GEN_CHECK_SIZE(STAMRATIOU32);
    8586
    8687    GEN_CHECK_SIZE(DBGF);
     
    600601    GEN_CHECK_OFF(CSAM, StatNrPages);
    601602
    602     //GEN_CHECK_SIZE(PATM);
    603 
    604     return 0;
     603    GEN_CHECK_SIZE(PATM);
     604    GEN_CHECK_OFF(PATM, offVM);
     605    GEN_CHECK_OFF(PATM, pPatchMemGC);
     606    GEN_CHECK_OFF(PATM, pPatchMemHC);
     607    GEN_CHECK_OFF(PATM, cbPatchMem);
     608    GEN_CHECK_OFF(PATM, offPatchMem);
     609    GEN_CHECK_OFF(PATM, fOutOfMemory);
     610    GEN_CHECK_OFF(PATM, deltaReloc);
     611    GEN_CHECK_OFF(PATM, pGCStateGC);
     612    GEN_CHECK_OFF(PATM, pGCStateHC);
     613    GEN_CHECK_OFF(PATM, pGCStackGC);
     614    GEN_CHECK_OFF(PATM, pGCStackHC);
     615    GEN_CHECK_OFF(PATM, pCPUMCtxGC);
     616    GEN_CHECK_OFF(PATM, pStatsGC);
     617    GEN_CHECK_OFF(PATM, pStatsHC);
     618    GEN_CHECK_OFF(PATM, uCurrentPatchIdx);
     619    GEN_CHECK_OFF(PATM, ulCallDepth);
     620    GEN_CHECK_OFF(PATM, cPageRecords);
     621    GEN_CHECK_OFF(PATM, pPatchedInstrGCLowest);
     622    GEN_CHECK_OFF(PATM, pPatchedInstrGCHighest);
     623    GEN_CHECK_OFF(PATM, PatchLookupTreeHC);
     624    GEN_CHECK_OFF(PATM, PatchLookupTreeGC);
     625    GEN_CHECK_OFF(PATM, pfnHelperCallGC);
     626    GEN_CHECK_OFF(PATM, pfnHelperRetGC);
     627    GEN_CHECK_OFF(PATM, pfnHelperJumpGC);
     628    GEN_CHECK_OFF(PATM, pfnHelperIretGC);
     629    GEN_CHECK_OFF(PATM, pGlobalPatchRec);
     630    GEN_CHECK_OFF(PATM, pfnSysEnterGC);
     631    GEN_CHECK_OFF(PATM, pfnSysEnterPatchGC);
     632    GEN_CHECK_OFF(PATM, uSysEnterPatchIdx);
     633    GEN_CHECK_OFF(PATM, pvFaultMonitor);
     634    GEN_CHECK_OFF(PATM, mmio);
     635    GEN_CHECK_OFF(PATM, mmio.GCPhys);
     636    GEN_CHECK_OFF(PATM, mmio.pCachedData);
     637    GEN_CHECK_OFF(PATM, savedstate);
     638    GEN_CHECK_OFF(PATM, savedstate.pSSM);
     639    GEN_CHECK_OFF(PATM, savedstate.cPatches);
     640    GEN_CHECK_OFF(PATM, StatNrOpcodeRead);
     641    GEN_CHECK_OFF(PATM, StatU32FunctionMaxSlotsUsed);
     642
     643    GEN_CHECK_SIZE(PATMGCSTATE);
     644    GEN_CHECK_OFF(PATMGCSTATE, uVMFlags);
     645    GEN_CHECK_OFF(PATMGCSTATE, uPendingAction);
     646    GEN_CHECK_OFF(PATMGCSTATE, uPatchCalls);
     647    GEN_CHECK_OFF(PATMGCSTATE, uScratch);
     648    GEN_CHECK_OFF(PATMGCSTATE, uIretEFlags);
     649    GEN_CHECK_OFF(PATMGCSTATE, uIretCS);
     650    GEN_CHECK_OFF(PATMGCSTATE, uIretEIP);
     651    GEN_CHECK_OFF(PATMGCSTATE, Psp);
     652    GEN_CHECK_OFF(PATMGCSTATE, fPIF);
     653    GEN_CHECK_OFF(PATMGCSTATE, GCPtrInhibitInterrupts);
     654    GEN_CHECK_OFF(PATMGCSTATE, Restore);
     655    GEN_CHECK_OFF(PATMGCSTATE, Restore.uEAX);
     656    GEN_CHECK_OFF(PATMGCSTATE, Restore.uECX);
     657    GEN_CHECK_OFF(PATMGCSTATE, Restore.uEDI);
     658    GEN_CHECK_OFF(PATMGCSTATE, Restore.eFlags);
     659    GEN_CHECK_OFF(PATMGCSTATE, Restore.uFlags);
     660    GEN_CHECK_SIZE(PATMTREES);
     661    GEN_CHECK_OFF(PATMTREES, PatchTree);
     662    GEN_CHECK_OFF(PATMTREES, PatchTreeByPatchAddr);
     663    GEN_CHECK_OFF(PATMTREES, PatchTreeByPage);
     664    GEN_CHECK_SIZE(PATMPATCHREC);
     665    GEN_CHECK_OFF(PATMPATCHREC, Core);
     666    GEN_CHECK_OFF(PATMPATCHREC, CoreOffset);
     667    GEN_CHECK_OFF(PATMPATCHREC, patch);
     668    GEN_CHECK_SIZE(PATCHINFO);
     669    GEN_CHECK_OFF(PATCHINFO, uState);
     670    GEN_CHECK_OFF(PATCHINFO, uOldState);
     671    GEN_CHECK_OFF(PATCHINFO, uOpMode);
     672    GEN_CHECK_OFF(PATCHINFO, pPrivInstrHC);
     673    GEN_CHECK_OFF(PATCHINFO, pPrivInstrGC);
     674    GEN_CHECK_OFF(PATCHINFO, aPrivInstr);
     675    GEN_CHECK_OFF(PATCHINFO, aPrivInstr[1]);
     676    GEN_CHECK_OFF(PATCHINFO, aPrivInstr[MAX_INSTR_SIZE - 1]);
     677    GEN_CHECK_OFF(PATCHINFO, cbPrivInstr);
     678    GEN_CHECK_OFF(PATCHINFO, opcode);     
     679    GEN_CHECK_OFF(PATCHINFO, cbPatchJump);
     680    GEN_CHECK_OFF(PATCHINFO, pPatchJumpDestGC);
     681    GEN_CHECK_OFF(PATCHINFO, pPatchBlockOffset);
     682    GEN_CHECK_OFF(PATCHINFO, cbPatchBlockSize);
     683    GEN_CHECK_OFF(PATCHINFO, uCurPatchOffset);
     684    GEN_CHECK_OFF(PATCHINFO, flags);
     685    GEN_CHECK_OFF(PATCHINFO, pInstrGCLowest);
     686    GEN_CHECK_OFF(PATCHINFO, pInstrGCHighest);
     687    GEN_CHECK_OFF(PATCHINFO, FixupTree);
     688    GEN_CHECK_OFF(PATCHINFO, nrFixups);
     689    GEN_CHECK_OFF(PATCHINFO, JumpTree);
     690    GEN_CHECK_OFF(PATCHINFO, nrJumpRecs);
     691    GEN_CHECK_OFF(PATCHINFO, Patch2GuestAddrTree);
     692    GEN_CHECK_OFF(PATCHINFO, Guest2PatchAddrTree);
     693    GEN_CHECK_OFF(PATCHINFO, nrPatch2GuestRecs);
     694    GEN_CHECK_OFF(PATCHINFO, cacheRec);
     695    GEN_CHECK_OFF(PATCHINFO, cacheRec.pPatchLocStartHC);
     696    GEN_CHECK_OFF(PATCHINFO, cacheRec.pPatchLocEndHC);
     697    GEN_CHECK_OFF(PATCHINFO, cacheRec.pGuestLoc);
     698    GEN_CHECK_OFF(PATCHINFO, cacheRec.opsize);
     699    GEN_CHECK_OFF(PATCHINFO, pTempInfo);
     700    GEN_CHECK_OFF(PATCHINFO, cCodeWrites);
     701    GEN_CHECK_OFF(PATCHINFO, cTraps);
     702    GEN_CHECK_OFF(PATCHINFO, cInvalidWrites);
     703    GEN_CHECK_OFF(PATCHINFO, uPatchIdx);
     704    GEN_CHECK_OFF(PATCHINFO, bDirtyOpcode);
     705    GEN_CHECK_SIZE(PATMPATCHPAGE);
     706    GEN_CHECK_OFF(PATMPATCHPAGE, Core);
     707    GEN_CHECK_OFF(PATMPATCHPAGE, pLowestAddrGC);
     708    GEN_CHECK_OFF(PATMPATCHPAGE, pHighestAddrGC);
     709    GEN_CHECK_OFF(PATMPATCHPAGE, cCount);
     710    GEN_CHECK_OFF(PATMPATCHPAGE, cMaxPatches);
     711    GEN_CHECK_OFF(PATMPATCHPAGE, aPatch);
     712
     713    return (0);
    605714}
    606715
    607 
    608 
  • trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp

    r474 r520  
    199199    CHECK_PADDING3(REMHANDLERNOTIFICATION, u.PhysicalModify, u.padding);
    200200    CHECK_SIZE_ALIGNMENT(VMMR0JMPBUF, 8);
     201    CHECK_SIZE_ALIGNMENT(PATCHINFO, 8);
    201202#if 0
    202203    PRINT_OFFSET(VM, fForcedActions);
     
    204205    PRINT_OFFSET(VM, StatGCToQemu);
    205206#endif
     207
    206208
    207209
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