VirtualBox

Changeset 26277 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Feb 5, 2010 4:44:42 AM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
57336
Message:

VMM: more RC/GC warnings - CSAMDoesPageNeedScanning and CSAMMarkPage now takes RTRCUINTPTR instead of RTRCPTR to ease the pain using them in RC.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PATM/VMMAll/CSAMAll.cpp

    r26271 r26277  
    109109 *
    110110 */
    111 VMMDECL(int) CSAMMarkPage(PVM pVM, RTRCPTR pPage, bool fScanned)
     111VMMDECL(int) CSAMMarkPage(PVM pVM, RTRCUINTPTR pPage, bool fScanned)
    112112{
    113113    int pgdir, bit;
     
    115115
    116116#ifdef LOG_ENABLED
    117     if (fScanned && !CSAMIsPageScanned(pVM, pPage))
     117    if (fScanned && !CSAMIsPageScanned(pVM, (RTRCPTR)pPage))
    118118       Log(("CSAMMarkPage %RRv\n", pPage));
    119119#endif
     
    178178 * @param   GCPtr       GC pointer of page
    179179 */
    180 VMMDECL(bool) CSAMDoesPageNeedScanning(PVM pVM, RTRCPTR GCPtr)
     180VMMDECL(bool) CSAMDoesPageNeedScanning(PVM pVM, RTRCUINTPTR GCPtr)
    181181{
    182182    if(!CSAMIsEnabled(pVM))
    183183        return false;
    184184
    185     if(CSAMIsPageScanned(pVM, GCPtr))
     185    if(CSAMIsPageScanned(pVM, (RTRCPTR)GCPtr))
    186186    {
    187187        /* Already checked! */
  • trunk/src/VBox/VMM/PGMInternal.h

    r26202 r26277  
    322322 */
    323323#ifdef IN_RC
    324 # define PGM_INVL_PG(pVCpu, GCVirt)             ASMInvalidatePage((void *)(GCVirt))
     324# define PGM_INVL_PG(pVCpu, GCVirt)             ASMInvalidatePage((void *)(uintptr_t)(GCVirt))
    325325#elif defined(IN_RING0)
    326326# define PGM_INVL_PG(pVCpu, GCVirt)             HWACCMInvalidatePage(pVCpu, (RTGCPTR)(GCVirt))
     
    336336 */
    337337#ifdef IN_RC
    338 # define PGM_INVL_PG_ALL_VCPU(pVM, GCVirt)      ASMInvalidatePage((void *)(GCVirt))
     338# define PGM_INVL_PG_ALL_VCPU(pVM, GCVirt)      ASMInvalidatePage((void *)(uintptr_t)(GCVirt))
    339339#elif defined(IN_RING0)
    340340# define PGM_INVL_PG_ALL_VCPU(pVM, GCVirt)      HWACCMInvalidatePageOnAllVCpus(pVM, (RTGCPTR)(GCVirt))
     
    906906 * @param   pPage       Pointer to the physical guest page tracking structure.
    907907 */
    908 #define PGM_PAGE_GET_HNDL_VIRT_STATE(pPage) ( (pPage)->u16MiscY.au8[1] & UINT8_C(0x03) )
     908#define PGM_PAGE_GET_HNDL_VIRT_STATE(pPage) ((uint8_t)( (pPage)->u16MiscY.au8[1] & UINT8_C(0x03) ))
    909909
    910910/**
  • trunk/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp

    r25685 r26277  
    7171#else
    7272    AssertMsgReturn(pCritSect->s.Core.u32Magic == RTCRITSECT_MAGIC, ("%RX32\n", pCritSect->s.Core.u32Magic),
    73                     VERR_SEM_DESTROYED);
     73                    NIL_RTNATIVETHREAD);
    7474    PVM             pVM         = pCritSect->s.CTX_SUFF(pVM); AssertPtr(pVM);
    7575    PVMCPU          pVCpu       = VMMGetCpu(pVM);             AssertPtr(pVCpu);
  • trunk/src/VBox/VMM/VMMAll/PGMAll.cpp

    r26202 r26277  
    22182218    PGMDynMapHCPage(pVM, HCPhys, ppv);
    22192219#endif
    2220     *ppv = (void *)((uintptr_t)*ppv | (GCPhys & PAGE_OFFSET_MASK));
     2220    *ppv = (void *)((uintptr_t)*ppv | (uintptr_t)(GCPhys & PAGE_OFFSET_MASK));
    22212221    return VINF_SUCCESS;
    22222222}
  • trunk/src/VBox/VMM/VMMAll/PGMAllBth.h

    r26271 r26277  
    701701                PGMGstGetPage(pVCpu, pvFault, &fPageGst2, &GCPhys2);
    702702                Log(("Page out of sync: %RGv eip=%08x PdeSrc.n.u1User=%d fPageGst2=%08llx GCPhys2=%RGp scan=%d\n",
    703                      pvFault, pRegFrame->eip, PdeSrc.n.u1User, fPageGst2, GCPhys2, CSAMDoesPageNeedScanning(pVM, (RTRCPTR)pRegFrame->eip)));
     703                     pvFault, pRegFrame->eip, PdeSrc.n.u1User, fPageGst2, GCPhys2, CSAMDoesPageNeedScanning(pVM, pRegFrame->eip)));
    704704#   endif /* LOG_ENABLED */
    705705
     
    717717#    ifdef CSAM_DETECT_NEW_CODE_PAGES
    718718                            ||  (   !PATMIsPatchGCAddr(pVM, pRegFrame->eip)
    719                                  && CSAMDoesPageNeedScanning(pVM, (RTRCPTR)pRegFrame->eip))   /* any new code we encounter here */
     719                                 && CSAMDoesPageNeedScanning(pVM, pRegFrame->eip))   /* any new code we encounter here */
    720720#    endif /* CSAM_DETECT_NEW_CODE_PAGES */
    721721                           )
     
    776776                        /** @todo not correct for pages that contain both code and data!! */
    777777                        Log2(("CSAMMarkPage %RGv; scanned=%d\n", pvFault, true));
    778                         CSAMMarkPage(pVM, (RTRCPTR)pvFault, true);
     778                        CSAMMarkPage(pVM, pvFault, true);
    779779                    }
    780780                }
     
    17281728                                if (    ((PdeSrc.u & PteSrc.u) & (X86_PTE_RW | X86_PTE_US))
    17291729                                    ||  iPTDst == ((GCPtrPage >> SHW_PT_SHIFT) & SHW_PT_MASK)   /* always sync GCPtrPage */
    1730                                     ||  !CSAMDoesPageNeedScanning(pVM, (RTRCPTR)GCPtrCurPage)
     1730                                    ||  !CSAMDoesPageNeedScanning(pVM, GCPtrCurPage)
    17311731                                    ||  (   (pPage = pgmPhysGetPage(&pVM->pgm.s, PteSrc.u & GST_PTE_PG_MASK))
    17321732                                         && PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
     
    26882688                        PPGMPAGE pPage;
    26892689                        if (    ((PdeSrc.u & pPTSrc->a[iPTSrc].u) & (X86_PTE_RW | X86_PTE_US))
    2690                             ||  !CSAMDoesPageNeedScanning(pVM, (RTRCPTR)((iPDSrc << GST_PD_SHIFT) | (iPTSrc << PAGE_SHIFT)))
     2690                            ||  !CSAMDoesPageNeedScanning(pVM, (iPDSrc << GST_PD_SHIFT) | (iPTSrc << PAGE_SHIFT))
    26912691                            ||  (   (pPage = pgmPhysGetPage(&pVM->pgm.s, PteSrc.u & GST_PTE_PG_MASK))
    26922692                                 &&  PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
     
    28092809                         */
    28102810                        else if (    !PdeSrc.n.u1User
    2811                                  &&  CSAMDoesPageNeedScanning(pVM, (RTRCPTR)(GCPtr | (iPTDst << SHW_PT_SHIFT))))
     2811                                 &&  CSAMDoesPageNeedScanning(pVM, GCPtr | (iPTDst << SHW_PT_SHIFT)))
    28122812                            PteDst.u = 0;
    28132813# endif
     
    31483148        /** @todo not correct for pages that contain both code and data!! */
    31493149        Log(("CSAMMarkPage %RGv; scanned=%d\n", GCPtrPage, true));
    3150         CSAMMarkPage(pVM, (RTRCPTR)GCPtrPage, true);
     3150        CSAMMarkPage(pVM, GCPtrPage, true);
    31513151    }
    31523152# endif
     
    42394239            pVCpu->pgm.s.pGstPaePdptR0 = (R0PTRTYPE(PX86PDPT))HCPtrGuestCR3;
    42404240#  endif
    4241             pVCpu->pgm.s.pGstPaePdptRC = (RCPTRTYPE(PX86PDPT))((RCPTRTYPE(uint8_t *))pVM->pgm.s.GCPtrCR3Mapping + off);
     4241            pVCpu->pgm.s.pGstPaePdptRC = (RCPTRTYPE(PX86PDPT))((RTRCUINTPTR)pVM->pgm.s.GCPtrCR3Mapping + off);
    42424242            Log(("Cached mapping %RRv\n", pVCpu->pgm.s.pGstPaePdptRC));
    42434243
     
    42744274                        pVCpu->pgm.s.apGstPaePDsR0[i]     = (R0PTRTYPE(PX86PDPAE))HCPtr;
    42754275#  endif
    4276                         pVCpu->pgm.s.apGstPaePDsRC[i]     = (RCPTRTYPE(PX86PDPAE))GCPtr;
     4276                        pVCpu->pgm.s.apGstPaePDsRC[i]     = (RCPTRTYPE(PX86PDPAE))(RTRCUINTPTR)GCPtr;
    42774277                        pVCpu->pgm.s.aGCPhysGstPaePDs[i]  = GCPhys;
    42784278#  ifdef IN_RC
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