Changeset 104509 in vbox
- Timestamp:
- May 3, 2024 2:14:36 PM (11 months ago)
- svn:sync-xref-src-repo-rev:
- 163032
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/gcm.h
r104507 r104509 59 59 #endif /* IN_RING3 */ 60 60 61 VMMDECL(bool) GCMIsEnabled(PVM pVM);62 61 VMM_INT_DECL(bool) GCMShouldTrapXcptDE(PVMCPUCC pVCpu); 63 62 VMM_INT_DECL(VBOXSTRICTRC) GCMXcptDE(PVMCPUCC pVCpu, PCPUMCTX pCtx, PDISSTATE pDis, uint8_t *pcbInstr); -
trunk/src/VBox/VMM/VMMAll/GCMAll.cpp
r104508 r104509 39 39 40 40 41 /**42 * Checks whether GCM is enabled for this VM.43 *44 * @retval true if GCM is on.45 * @retval false if no GCM fixer is enabled.46 *47 * @param pVM The cross context VM structure.48 */49 VMMDECL(bool) GCMIsEnabled(PVM pVM)50 {51 return pVM->gcm.s.fFixerSet != GCMFIXER_NONE;52 }53 54 55 /**56 * Gets the GCM fixers configured for this VM.57 *58 * @returns The GCM provider Id.59 * @param pVM The cross context VM structure.60 */61 VMMDECL(int32_t) GCMGetFixers(PVM pVM)62 {63 return pVM->gcm.s.fFixerSet;64 }65 66 41 67 42 /** … … 74 49 VMM_INT_DECL(bool) GCMShouldTrapXcptDE(PVMCPUCC pVCpu) 75 50 { 76 LogF lowFunc(("entered\n"));51 LogFunc(("GCM checking if #DE needs trapping\n")); 77 52 PVM pVM = pVCpu->CTX_SUFF(pVM); 78 if (!GCMIsEnabled(pVM))79 return false;80 81 LogFunc(("GCM checking if #DE needs trapping\n"));82 53 83 54 /* See if the enabled fixers need to intercept #DE. */ … … 115 86 { 116 87 PVMCC pVM = pVCpu->CTX_SUFF(pVM); 117 Assert( GCMIsEnabled(pVM));88 Assert(pVM->gcm.s.fFixerSet & (GCMFIXER_DBZ_DOS | GCMFIXER_DBZ_OS2 | GCMFIXER_DBZ_WIN9X)); 118 89 Assert(pDis || pcbInstr); 119 90 RT_NOREF(pDis); -
trunk/src/VBox/VMM/include/GCMInternal.h
r104507 r104509 43 43 44 44 /** The saved state version. */ 45 #define GCM_SAVED_STATE_VERSION 45 #define GCM_SAVED_STATE_VERSION 1 46 46 47 47 /** 48 48 * GCM Fixer Identifiers. 49 49 * @remarks Part of saved state! 50 * @{ 50 51 */ 51 typedef enum GCMFIXERID 52 { 53 /** None. */ 54 GCMFIXER_NONE = 0, 55 /** DOS division by zero, the worst. Includes Windows 3.x. */ 56 GCMFIXER_DBZ_DOS = RT_BIT(0), 57 /** OS/2 (any version) division by zero. */ 58 GCMFIXER_DBZ_OS2 = RT_BIT(1), 59 /** Windows 9x division by zero. */ 60 GCMFIXER_DBZ_WIN9X = RT_BIT(2), 61 /** 32-bit hack. */ 62 GCMFIXER_32BIT_HACK = 0x7fffffff 63 } GCMFIXERID; 64 AssertCompileSize(GCMFIXERID, sizeof(uint32_t)); 52 /** DOS division by zero, the worst. Includes Windows 3.x. */ 53 #define GCMFIXER_DBZ_DOS RT_BIT_32(0) 54 /** OS/2 (any version) division by zero. */ 55 #define GCMFIXER_DBZ_OS2 RT_BIT_32(1) 56 /** Windows 9x division by zero. */ 57 #define GCMFIXER_DBZ_WIN9X RT_BIT_32(2) 58 /** @} */ 65 59 66 60 /** … … 71 65 /** The provider that is active for this VM. */ 72 66 uint32_t fFixerSet; 73 74 67 } GCM; 75 68 /** Pointer to GCM VM instance data. */
Note:
See TracChangeset
for help on using the changeset viewer.