Changeset 73199 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Jul 18, 2018 12:13:55 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 123804
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/PGM.cpp
r73097 r73199 1279 1279 pPGM->offPGM = (uintptr_t)&pVCpu->pgm.s - (uintptr_t)&pVM->pgm.s; 1280 1280 1281 pPGM->enmShadowMode = PGMMODE_INVALID; 1282 pPGM->enmGuestMode = PGMMODE_INVALID; 1283 1284 pPGM->GCPhysCR3 = NIL_RTGCPHYS; 1285 1286 pPGM->pGst32BitPdR3 = NULL; 1287 pPGM->pGstPaePdptR3 = NULL; 1288 pPGM->pGstAmd64Pml4R3 = NULL; 1281 pPGM->enmShadowMode = PGMMODE_INVALID; 1282 pPGM->enmGuestMode = PGMMODE_INVALID; 1283 pPGM->idxGuestModeData = UINT8_MAX; 1284 pPGM->idxShadowModeData = UINT8_MAX; 1285 pPGM->idxBothModeData = UINT8_MAX; 1286 1287 pPGM->GCPhysCR3 = NIL_RTGCPHYS; 1288 1289 pPGM->pGst32BitPdR3 = NULL; 1290 pPGM->pGstPaePdptR3 = NULL; 1291 pPGM->pGstAmd64Pml4R3 = NULL; 1289 1292 #ifndef VBOX_WITH_2X_4GB_ADDR_SPACE 1290 pPGM->pGst32BitPdR0 = NIL_RTR0PTR;1291 pPGM->pGstPaePdptR0 = NIL_RTR0PTR;1292 pPGM->pGstAmd64Pml4R0 = NIL_RTR0PTR;1293 pPGM->pGst32BitPdR0 = NIL_RTR0PTR; 1294 pPGM->pGstPaePdptR0 = NIL_RTR0PTR; 1295 pPGM->pGstAmd64Pml4R0 = NIL_RTR0PTR; 1293 1296 #endif 1294 pPGM->pGst32BitPdRC = NIL_RTRCPTR;1295 pPGM->pGstPaePdptRC = NIL_RTRCPTR;1297 pPGM->pGst32BitPdRC = NIL_RTRCPTR; 1298 pPGM->pGstPaePdptRC = NIL_RTRCPTR; 1296 1299 for (unsigned i = 0; i < RT_ELEMENTS(pVCpu->pgm.s.apGstPaePDsR3); i++) 1297 1300 { … … 1565 1568 PVMCPU pVCpu = &pVM->aCpus[i]; 1566 1569 1567 pVCpu->pgm.s.enmShadowMode = PGMMODE_INVALID; 1568 pVCpu->pgm.s.enmGuestMode = PGMMODE_INVALID; 1570 pVCpu->pgm.s.enmShadowMode = PGMMODE_INVALID; 1571 pVCpu->pgm.s.enmGuestMode = PGMMODE_INVALID; 1572 pVCpu->pgm.s.idxGuestModeData = UINT8_MAX; 1573 pVCpu->pgm.s.idxShadowModeData = UINT8_MAX; 1574 pVCpu->pgm.s.idxBothModeData = UINT8_MAX; 1569 1575 } 1570 1576 … … 2350 2356 2351 2357 PGM_SHW_PFN(Relocate, pVCpu)(pVCpu, offDelta); 2352 PGM_GST_PFN(Relocate, pVCpu)(pVCpu, offDelta); 2358 2359 uintptr_t const idxGst = pVCpu->pgm.s.idxGuestModeData; 2360 if ( idxGst < RT_ELEMENTS(g_aPgmGuestModeData) 2361 && g_aPgmGuestModeData[idxGst].pfnRelocate) 2362 g_aPgmGuestModeData[idxGst].pfnRelocate(pVCpu, offDelta); 2363 2353 2364 PGM_BTH_PFN(Relocate, pVCpu)(pVCpu, offDelta); 2354 2365 } … … 2547 2558 VMMR3DECL(void) PGMR3ResetCpu(PVM pVM, PVMCPU pVCpu) 2548 2559 { 2549 int rc = PGM_GST_PFN(Exit, pVCpu)(pVCpu); 2550 AssertRC(rc); 2560 uintptr_t const idxGst = pVCpu->pgm.s.idxGuestModeData; 2561 if ( idxGst < RT_ELEMENTS(g_aPgmGuestModeData) 2562 && g_aPgmGuestModeData[idxGst].pfnExit) 2563 { 2564 int rc = g_aPgmGuestModeData[idxGst].pfnExit(pVCpu); 2565 AssertReleaseRC(rc); 2566 } 2551 2567 pVCpu->pgm.s.GCPhysCR3 = NIL_RTGCPHYS; 2552 2568 2553 rc = PGMR3ChangeMode(pVM, pVCpu, PGMMODE_REAL);2554 AssertR C(rc);2569 int rc = PGMR3ChangeMode(pVM, pVCpu, PGMMODE_REAL); 2570 AssertReleaseRC(rc); 2555 2571 2556 2572 STAM_REL_COUNTER_RESET(&pVCpu->pgm.s.cGuestModeChanges); … … 2601 2617 for (VMCPUID i = 0; i < pVM->cCpus; i++) 2602 2618 { 2603 PVMCPU pVCpu = &pVM->aCpus[i]; 2604 int rc = PGM_GST_PFN(Exit, pVCpu)(pVCpu); 2605 AssertReleaseRC(rc); 2619 PVMCPU pVCpu = &pVM->aCpus[i]; 2620 uintptr_t const idxGst = pVCpu->pgm.s.idxGuestModeData; 2621 if ( idxGst < RT_ELEMENTS(g_aPgmGuestModeData) 2622 && g_aPgmGuestModeData[idxGst].pfnExit) 2623 { 2624 int rc = g_aPgmGuestModeData[idxGst].pfnExit(pVCpu); 2625 AssertReleaseRC(rc); 2626 } 2606 2627 pVCpu->pgm.s.GCPhysCR3 = NIL_RTGCPHYS; 2607 2628 } … … 2613 2634 2614 2635 /* 2615 * Switch mode back to real mode. ( before resetting the pgm pool!)2636 * Switch mode back to real mode. (Before resetting the pgm pool!) 2616 2637 */ 2617 2638 for (VMCPUID i = 0; i < pVM->cCpus; i++) … … 2783 2804 default: psz = "unknown"; break; 2784 2805 } 2785 pHlp->pfnPrintf(pHlp, "Host paging mode: 2806 pHlp->pfnPrintf(pHlp, "Host paging mode: %s\n", psz); 2786 2807 } 2787 2808 } … … 3058 3079 pModeData->uGstType = PGM_TYPE_REAL; 3059 3080 rc = PGM_SHW_NAME_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3060 rc = PGM_GST_NAME_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3061 3081 rc = PGM_BTH_NAME_32BIT_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3062 3082 … … 3065 3085 pModeData->uGstType = PGM_TYPE_PROT; 3066 3086 rc = PGM_SHW_NAME_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3067 rc = PGM_GST_NAME_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3068 3087 rc = PGM_BTH_NAME_32BIT_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3069 3088 … … 3072 3091 pModeData->uGstType = PGM_TYPE_32BIT; 3073 3092 rc = PGM_SHW_NAME_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3074 rc = PGM_GST_NAME_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3075 3093 rc = PGM_BTH_NAME_32BIT_32BIT(InitData)(pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3076 3094 … … 3079 3097 pModeData->uGstType = PGM_TYPE_REAL; 3080 3098 rc = PGM_SHW_NAME_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3081 rc = PGM_GST_NAME_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3082 3099 rc = PGM_BTH_NAME_PAE_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3083 3100 … … 3086 3103 pModeData->uGstType = PGM_TYPE_PROT; 3087 3104 rc = PGM_SHW_NAME_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3088 rc = PGM_GST_NAME_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3089 3105 rc = PGM_BTH_NAME_PAE_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3090 3106 … … 3093 3109 pModeData->uGstType = PGM_TYPE_32BIT; 3094 3110 rc = PGM_SHW_NAME_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3095 rc = PGM_GST_NAME_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3096 3111 rc = PGM_BTH_NAME_PAE_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3097 3112 … … 3100 3115 pModeData->uGstType = PGM_TYPE_PAE; 3101 3116 rc = PGM_SHW_NAME_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3102 rc = PGM_GST_NAME_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3103 3117 rc = PGM_BTH_NAME_PAE_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3104 3118 … … 3108 3122 pModeData->uGstType = PGM_TYPE_AMD64; 3109 3123 rc = PGM_SHW_NAME_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3110 rc = PGM_GST_NAME_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3111 3124 rc = PGM_BTH_NAME_AMD64_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3112 3125 #endif … … 3116 3129 pModeData->uShwType = PGM_TYPE_NESTED; 3117 3130 pModeData->uGstType = PGM_TYPE_REAL; 3118 rc = PGM_GST_NAME_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3119 3131 rc = PGM_BTH_NAME_NESTED_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3120 3132 … … 3122 3134 pModeData->uShwType = PGM_TYPE_NESTED; 3123 3135 pModeData->uGstType = PGM_TYPE_PROT; 3124 rc = PGM_GST_NAME_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3125 3136 rc = PGM_BTH_NAME_NESTED_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3126 3137 … … 3128 3139 pModeData->uShwType = PGM_TYPE_NESTED; 3129 3140 pModeData->uGstType = PGM_TYPE_32BIT; 3130 rc = PGM_GST_NAME_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3131 3141 rc = PGM_BTH_NAME_NESTED_32BIT(InitData)(pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3132 3142 … … 3134 3144 pModeData->uShwType = PGM_TYPE_NESTED; 3135 3145 pModeData->uGstType = PGM_TYPE_PAE; 3136 rc = PGM_GST_NAME_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3137 3146 rc = PGM_BTH_NAME_NESTED_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3138 3147 … … 3141 3150 pModeData->uShwType = PGM_TYPE_NESTED; 3142 3151 pModeData->uGstType = PGM_TYPE_AMD64; 3143 rc = PGM_GST_NAME_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3144 3152 rc = PGM_BTH_NAME_NESTED_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3145 3153 #endif … … 3205 3213 pModeData->uGstType = PGM_TYPE_REAL; 3206 3214 rc = PGM_SHW_NAME_EPT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3207 rc = PGM_GST_NAME_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3208 3215 rc = PGM_BTH_NAME_EPT_REAL(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3209 3216 … … 3212 3219 pModeData->uGstType = PGM_TYPE_PROT; 3213 3220 rc = PGM_SHW_NAME_EPT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3214 rc = PGM_GST_NAME_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3215 3221 rc = PGM_BTH_NAME_EPT_PROT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3216 3222 … … 3219 3225 pModeData->uGstType = PGM_TYPE_32BIT; 3220 3226 rc = PGM_SHW_NAME_EPT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3221 rc = PGM_GST_NAME_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3222 3227 rc = PGM_BTH_NAME_EPT_32BIT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3223 3228 … … 3226 3231 pModeData->uGstType = PGM_TYPE_PAE; 3227 3232 rc = PGM_SHW_NAME_EPT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3228 rc = PGM_GST_NAME_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3229 3233 rc = PGM_BTH_NAME_EPT_PAE(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3230 3234 … … 3234 3238 pModeData->uGstType = PGM_TYPE_AMD64; 3235 3239 rc = PGM_SHW_NAME_EPT(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3236 rc = PGM_GST_NAME_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc);3237 3240 rc = PGM_BTH_NAME_EPT_AMD64(InitData)( pVM, pModeData, fResolveGCAndR0); AssertRCReturn(rc, rc); 3238 3241 #endif … … 3251 3254 static void pgmR3ModeDataSwitch(PVM pVM, PVMCPU pVCpu, PGMMODE enmShw, PGMMODE enmGst) 3252 3255 { 3256 /* 3257 * Update the indexes. 3258 */ 3259 uintptr_t idxGst = pVCpu->pgm.s.idxGuestModeData = pgmModeToType(enmGst); 3260 Assert(g_aPgmGuestModeData[idxGst].uType == idxGst); 3261 AssertPtr(g_aPgmGuestModeData[idxGst].pfnGetPage); 3262 AssertPtr(g_aPgmGuestModeData[idxGst].pfnModifyPage); 3263 AssertPtr(g_aPgmGuestModeData[idxGst].pfnGetPDE); 3264 AssertPtr(g_aPgmGuestModeData[idxGst].pfnExit); 3265 AssertPtr(g_aPgmGuestModeData[idxGst].pfnEnter); 3266 AssertPtr(g_aPgmGuestModeData[idxGst].pfnRelocate); 3267 NOREF(idxGst); 3268 3269 pVCpu->pgm.s.idxShadowModeData = pgmModeToType(enmShw); 3270 pVCpu->pgm.s.idxBothModeData = pgmModeDataIndexByMode(enmShw, enmGst); 3271 3272 /* 3273 * The following code will be gradually reduced and finally removed: 3274 */ 3253 3275 PPGMMODEDATA pModeData = &pVM->pgm.s.paModeData[pgmModeDataIndexByMode(enmShw, enmGst)]; 3254 3276 … … 3268 3290 pVCpu->pgm.s.pfnR0ShwGetPage = pModeData->pfnR0ShwGetPage; 3269 3291 pVCpu->pgm.s.pfnR0ShwModifyPage = pModeData->pfnR0ShwModifyPage; 3270 3271 3272 /* guest */3273 pVCpu->pgm.s.pfnR3GstRelocate = pModeData->pfnR3GstRelocate;3274 pVCpu->pgm.s.pfnR3GstExit = pModeData->pfnR3GstExit;3275 pVCpu->pgm.s.pfnR3GstGetPage = pModeData->pfnR3GstGetPage;3276 pVCpu->pgm.s.pfnR3GstModifyPage = pModeData->pfnR3GstModifyPage;3277 pVCpu->pgm.s.pfnR3GstGetPDE = pModeData->pfnR3GstGetPDE;3278 pVCpu->pgm.s.pfnRCGstGetPage = pModeData->pfnRCGstGetPage;3279 pVCpu->pgm.s.pfnRCGstModifyPage = pModeData->pfnRCGstModifyPage;3280 pVCpu->pgm.s.pfnRCGstGetPDE = pModeData->pfnRCGstGetPDE;3281 pVCpu->pgm.s.pfnR0GstGetPage = pModeData->pfnR0GstGetPage;3282 pVCpu->pgm.s.pfnR0GstModifyPage = pModeData->pfnR0GstModifyPage;3283 pVCpu->pgm.s.pfnR0GstGetPDE = pModeData->pfnR0GstGetPDE;3284 Assert(pVCpu->pgm.s.pfnR3GstGetPage);3285 3292 3286 3293 /* both */ … … 3596 3603 3597 3604 /* guest */ 3598 if (PGM_GST_PFN(Exit, pVCpu)) 3599 { 3600 int rc = PGM_GST_PFN(Exit, pVCpu)(pVCpu); 3601 if (RT_FAILURE(rc)) 3602 { 3603 AssertMsgFailed(("Exit failed for guest mode %d: %Rrc\n", pVCpu->pgm.s.enmGuestMode, rc)); 3604 return rc; 3605 } 3605 uintptr_t const idxOldGst = pVCpu->pgm.s.idxGuestModeData; 3606 if ( idxOldGst < RT_ELEMENTS(g_aPgmGuestModeData) 3607 && g_aPgmGuestModeData[idxOldGst].pfnExit) 3608 { 3609 int rc = g_aPgmGuestModeData[idxOldGst].pfnExit(pVCpu); 3610 AssertMsgReturn(RT_SUCCESS(rc), ("Exit failed for guest mode %d: %Rrc\n", pVCpu->pgm.s.enmGuestMode, rc), rc); 3606 3611 } 3607 3612 pVCpu->pgm.s.GCPhysCR3 = NIL_RTGCPHYS; -
trunk/src/VBox/VMM/VMMR3/PGMGst.h
r70948 r73199 22 22 RT_C_DECLS_BEGIN 23 23 /* r3 */ 24 PGM_GST_DECL(int, InitData)(PVM pVM, PPGMMODEDATA pModeData, bool fResolveGCAndR0);25 24 PGM_GST_DECL(int, Enter)(PVMCPU pVCpu, RTGCPHYS GCPhysCR3); 26 25 PGM_GST_DECL(int, Relocate)(PVMCPU pVCpu, RTGCPTR offDelta); … … 32 31 PGM_GST_DECL(int, GetPDE)(PVMCPU pVCpu, RTGCPTR GCPtr, PX86PDEPAE pPDE); 33 32 RT_C_DECLS_END 34 35 36 /**37 * Initializes the guest bit of the paging mode data.38 *39 * @returns VBox status code.40 * @param pVM The cross context VM structure.41 * @param pModeData The pointer table to initialize (our members only).42 * @param fResolveGCAndR0 Indicate whether or not GC and Ring-0 symbols can be resolved now.43 * This is used early in the init process to avoid trouble with PDM44 * not being initialized yet.45 */46 PGM_GST_DECL(int, InitData)(PVM pVM, PPGMMODEDATA pModeData, bool fResolveGCAndR0)47 {48 Assert(pModeData->uGstType == PGM_GST_TYPE);49 50 /* Ring-3 */51 pModeData->pfnR3GstRelocate = PGM_GST_NAME(Relocate);52 pModeData->pfnR3GstExit = PGM_GST_NAME(Exit);53 pModeData->pfnR3GstGetPDE = PGM_GST_NAME(GetPDE);54 pModeData->pfnR3GstGetPage = PGM_GST_NAME(GetPage);55 pModeData->pfnR3GstModifyPage = PGM_GST_NAME(ModifyPage);56 57 if (fResolveGCAndR0)58 {59 int rc;60 61 if (VM_IS_RAW_MODE_ENABLED(pVM))62 {63 #if PGM_SHW_TYPE != PGM_TYPE_AMD64 /* No AMD64 for traditional virtualization, only VT-x and AMD-V. */64 /* RC */65 rc = PDMR3LdrGetSymbolRC(pVM, NULL, PGM_GST_NAME_RC_STR(GetPage), &pModeData->pfnRCGstGetPage);66 AssertMsgRCReturn(rc, ("%s -> rc=%Rrc\n", PGM_GST_NAME_RC_STR(GetPage), rc), rc);67 rc = PDMR3LdrGetSymbolRC(pVM, NULL, PGM_GST_NAME_RC_STR(ModifyPage), &pModeData->pfnRCGstModifyPage);68 AssertMsgRCReturn(rc, ("%s -> rc=%Rrc\n", PGM_GST_NAME_RC_STR(ModifyPage), rc), rc);69 rc = PDMR3LdrGetSymbolRC(pVM, NULL, PGM_GST_NAME_RC_STR(GetPDE), &pModeData->pfnRCGstGetPDE);70 AssertMsgRCReturn(rc, ("%s -> rc=%Rrc\n", PGM_GST_NAME_RC_STR(GetPDE), rc), rc);71 #endif /* Not AMD64 shadow paging. */72 }73 74 /* Ring-0 */75 rc = PDMR3LdrGetSymbolR0(pVM, NULL, PGM_GST_NAME_R0_STR(GetPage), &pModeData->pfnR0GstGetPage);76 AssertMsgRCReturn(rc, ("%s -> rc=%Rrc\n", PGM_GST_NAME_R0_STR(GetPage), rc), rc);77 rc = PDMR3LdrGetSymbolR0(pVM, NULL, PGM_GST_NAME_R0_STR(ModifyPage), &pModeData->pfnR0GstModifyPage);78 AssertMsgRCReturn(rc, ("%s -> rc=%Rrc\n", PGM_GST_NAME_R0_STR(ModifyPage), rc), rc);79 rc = PDMR3LdrGetSymbolR0(pVM, NULL, PGM_GST_NAME_R0_STR(GetPDE), &pModeData->pfnR0GstGetPDE);80 AssertMsgRCReturn(rc, ("%s -> rc=%Rrc\n", PGM_GST_NAME_R0_STR(GetPDE), rc), rc);81 }82 83 return VINF_SUCCESS;84 }85 33 86 34
Note:
See TracChangeset
for help on using the changeset viewer.