Changeset 520 in vbox
- Timestamp:
- Feb 1, 2007 8:23:43 PM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 18129
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PATM/PATMInternal.h
r369 r520 224 224 uint32_t uOpMode; 225 225 226 GCPTRTYPE(uint8_t *) pPrivInstrGC; //GC pointer of privileged instruction 226 227 HCPTRTYPE(uint8_t *) pPrivInstrHC; //HC pointer of privileged instruction 227 GCPTRTYPE(uint8_t *) pPrivInstrGC; //GC pointer of privileged instruction228 228 uint8_t aPrivInstr[MAX_INSTR_SIZE]; 229 229 uint32_t cbPrivInstr; … … 237 237 uint32_t cbPatchBlockSize; 238 238 uint32_t uCurPatchOffset; 239 #if HC_ARCH_BITS == 64 240 uint32_t Alignment0; /**< Align flags correctly. */ 241 #endif 239 242 240 243 uint64_t flags; … … 251 254 252 255 /* Tree of jumps inside the generated patch code. */ 256 int32_t nrJumpRecs; 253 257 HCPTRTYPE(PAVLPVNODECORE) JumpTree; 254 int32_t nrJumpRecs;255 258 256 259 /** … … 261 264 HCPTRTYPE(PAVLGCPTRNODECORE) Guest2PatchAddrTree; 262 265 uint32_t nrPatch2GuestRecs; 266 #if HC_ARCH_BITS == 64 267 uint32_t Alignment1; 268 #endif 263 269 264 270 // Cache record for PATMGCVirtToHCVirt … … 266 272 267 273 /* Temporary information during patch creation. Don't waste hypervisor memory for this. */ 268 PPATCHINFOTEMPpTempInfo;274 HCPTRTYPE(PPATCHINFOTEMP) pTempInfo; 269 275 270 276 /* Count the number of writes to the corresponding guest code. */ … … 282 288 /* First opcode byte, that's overwritten when a patch is marked dirty. */ 283 289 uint8_t bDirtyOpcode; 290 uint8_t Alignment2[7]; /**< Align the structure size on a 8-byte boundrary. */ 284 291 } PATCHINFO, *PPATCHINFO; 285 292 … … 363 370 364 371 /* GC PATM state pointers */ 372 HCPTRTYPE(PPATMGCSTATE) pGCStateHC; 365 373 GCPTRTYPE(PPATMGCSTATE) pGCStateGC; 366 HCPTRTYPE(PPATMGCSTATE) pGCStateHC;367 374 368 375 /** PATM stack page for call instruction execution. (2 parts: one for our private stack and one to store the original return address */ … … 393 400 394 401 /** Pointer to the patch tree for instructions replaced by 'int 3'. */ 402 GCPTRTYPE(PPATMTREES) PatchLookupTreeGC; 395 403 HCPTRTYPE(PPATMTREES) PatchLookupTreeHC; 396 GCPTRTYPE(PPATMTREES) PatchLookupTreeGC;397 404 398 405 /** Global PATM lookup and call function (used by call patches). */ … … 406 413 407 414 /** Fake patch record for global functions. */ 408 PPATMPATCHRECpGlobalPatchRec;415 HCPTRTYPE(PPATMPATCHREC) pGlobalPatchRec; 409 416 410 417 /** Pointer to original sysenter handler */ … … 428 435 struct 429 436 { 430 PSSMHANDLEpSSM;437 HCPTRTYPE(PSSMHANDLE) pSSM; 431 438 uint32_t cPatches; 439 #if HC_ARCH_BITS == 64 440 uint32_t Alignment0; /**< Align the structure size on a 8-byte boundrary. */ 441 #endif 432 442 } savedstate; 433 443 … … 484 494 STAMCOUNTER StatFunctionLookupInsert; 485 495 uint32_t StatU32FunctionMaxSlotsUsed; 496 uint32_t Alignment0; /**< Align the structure size on a 8-byte boundrary. */ 486 497 } PATM, *PPATM; 487 498 -
trunk/src/VBox/VMM/testcase/tstVMStructGC.cpp
r518 r520 83 83 GEN_CHECK_SIZE(CPUMCTX); 84 84 GEN_CHECK_SIZE(CPUMCTXCORE); 85 GEN_CHECK_SIZE(STAMRATIOU32); 85 86 86 87 GEN_CHECK_SIZE(DBGF); … … 600 601 GEN_CHECK_OFF(CSAM, StatNrPages); 601 602 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); 605 714 } 606 715 607 608 -
trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp
r474 r520 199 199 CHECK_PADDING3(REMHANDLERNOTIFICATION, u.PhysicalModify, u.padding); 200 200 CHECK_SIZE_ALIGNMENT(VMMR0JMPBUF, 8); 201 CHECK_SIZE_ALIGNMENT(PATCHINFO, 8); 201 202 #if 0 202 203 PRINT_OFFSET(VM, fForcedActions); … … 204 205 PRINT_OFFSET(VM, StatGCToQemu); 205 206 #endif 207 206 208 207 209
Note:
See TracChangeset
for help on using the changeset viewer.