VirtualBox

儲存庫 vbox 的更動 17119


忽略:
時間撮記:
2009-2-25 上午11:05:12 (16 年 以前)
作者:
vboxsync
訊息:

ifndef IN_RING0 for code that doesn't apply there.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp

    r17116 r17119  
    380380                    for (unsigned i=0;i<2;i++)
    381381                    {
     382#  ifndef IN_RING0
    382383                        if ((uShw.pPDPae->a[iShw + i].u & (PGM_PDFLAGS_MAPPING | X86_PDE_P)) == (PGM_PDFLAGS_MAPPING | X86_PDE_P))
    383384                        {
     
    388389                        }
    389390                        else
     391#  endif /* !IN_RING0 */
    390392                        if (uShw.pPDPae->a[iShw+i].n.u1Present)
    391393                        {
     
    406408                            if (iShw2 < RT_ELEMENTS(uShw.pPDPae->a))
    407409                            {
     410#  ifndef IN_RING0
    408411                                if ((uShw.pPDPae->a[iShw2].u & (PGM_PDFLAGS_MAPPING | X86_PDE_P)) == (PGM_PDFLAGS_MAPPING | X86_PDE_P))
    409412                                {
     
    414417                                }
    415418                                else
     419#  endif /* !IN_RING0 */
    416420                                if (uShw.pPDPae->a[iShw2].n.u1Present)
    417421                                {
     
    492496                LogFlow(("pgmPoolMonitorChainChanging: PGMPOOLKIND_32BIT_PD %x\n", iShw));
    493497#  endif
     498#  ifndef IN_RING0
    494499                if (uShw.pPD->a[iShw].u & PGM_PDFLAGS_MAPPING)
    495500                {
     
    500505                    break;
    501506                }
     507#  endif /* !IN_RING0 */
    502508#  ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY
     509#   ifndef IN_RING0
    503510                else
     511#   endif /* !IN_RING0 */
    504512                {
    505513                    if (uShw.pPD->a[iShw].n.u1Present)
     
    523531                        &&  iShw2 < RT_ELEMENTS(uShw.pPD->a))
    524532                    {
    525 
     533#  ifndef IN_RING0
    526534                        if (uShw.pPD->a[iShw2].u & PGM_PDFLAGS_MAPPING)
    527535                        {
     
    531539                            LogFlow(("pgmPoolMonitorChainChanging: Detected conflict at iShw2=%#x!\n", iShw2));
    532540                        }
     541#  endif /* !IN_RING0 */
    533542#  ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY
     543#   ifndef IN_RING0
    534544                        else
     545#   endif /* !IN_RING0 */
    535546                        {
    536547                            if (uShw.pPD->a[iShw2].n.u1Present)
     
    615626                uShw.pv = PGMPOOL_PAGE_2_PTR(pPool->CTX_SUFF(pVM), pPage);
    616627                const unsigned iShw = off / sizeof(X86PDEPAE);
     628#ifndef IN_RING0
    617629                if (uShw.pPDPae->a[iShw].u & PGM_PDFLAGS_MAPPING)
    618630                {
     
    623635                    break;
    624636                }
     637#endif /* !IN_RING0 */
    625638#ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY
    626639                /*
     
    656669                    AssertReturnVoid(iShw2 < RT_ELEMENTS(uShw.pPDPae->a));
    657670
     671#ifndef IN_RING0
    658672                    if (    iShw2 != iShw
    659673                        &&  uShw.pPDPae->a[iShw2].u & PGM_PDFLAGS_MAPPING)
     
    664678                        LogFlow(("pgmPoolMonitorChainChanging: Detected conflict at iShw2=%#x!\n", iShw2));
    665679                    }
     680#endif /* !IN_RING0 */
    666681#ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY
    667                     else if (uShw.pPDPae->a[iShw2].n.u1Present)
     682# ifndef IN_RING0
     683                    else
     684# endif /* !IN_RING0 */
     685                    if (uShw.pPDPae->a[iShw2].n.u1Present)
    668686                    {
    669687                        LogFlow(("pgmPoolMonitorChainChanging: pae pd iShw2=%#x: %RX64 -> freeing it!\n", iShw2, uShw.pPDPae->a[iShw2].u));
     
    706724                if (iShw < X86_PG_PAE_PDPE_ENTRIES)          /* don't use RT_ELEMENTS(uShw.pPDPT->a), because that's for long mode only */
    707725                {
     726# ifndef IN_RING0
    708727                    if (uShw.pPDPT->a[iShw].u & PGM_PLXFLAGS_MAPPING)
    709728                    {
     
    714733                        break;
    715734                    }
     735# endif /* !IN_RING0 */
    716736# ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY
     737#  ifndef IN_RING0
    717738                    else
     739#  endif /* !IN_RING0 */
    718740                    if (uShw.pPDPT->a[iShw].n.u1Present)
    719741                    {
     
    736758                            &&  iShw2 < X86_PG_PAE_PDPE_ENTRIES)
    737759                        {
     760# ifndef IN_RING0
    738761                            if (uShw.pPDPT->a[iShw2].u & PGM_PLXFLAGS_MAPPING)
    739762                            {
     
    743766                                LogFlow(("pgmPoolMonitorChainChanging: Detected conflict at iShw2=%#x!\n", iShw2));
    744767                            }
     768# endif /* !IN_RING0 */
    745769# ifdef VBOX_WITH_PGMPOOL_PAGING_ONLY
     770#  ifndef IN_RING0
    746771                            else
     772#  endif /* !IN_RING0 */
    747773                            if (uShw.pPDPT->a[iShw2].n.u1Present)
    748774                            {
     
    766792                uShw.pv = PGMPOOL_PAGE_2_PTR(pPool->CTX_SUFF(pVM), pPage);
    767793                const unsigned iShw = off / sizeof(X86PDEPAE);
    768                 if (uShw.pPDPae->a[iShw].u & PGM_PDFLAGS_MAPPING)
     794                Assert(!(uShw.pPDPae->a[iShw].u & PGM_PDFLAGS_MAPPING));
     795                if (uShw.pPDPae->a[iShw].n.u1Present)
    769796                {
    770                     Assert(pgmMapAreMappingsEnabled(&pPool->CTX_SUFF(pVM)->pgm.s));
    771                     VM_FF_SET(pPool->CTX_SUFF(pVM), VM_FF_PGM_SYNC_CR3);
    772                     LogFlow(("pgmPoolMonitorChainChanging: Detected conflict at iShw=%#x!\n", iShw));
    773                 }
    774                 else
    775                 {
    776                     if (uShw.pPDPae->a[iShw].n.u1Present)
    777                     {
    778                         LogFlow(("pgmPoolMonitorChainChanging: pae pd iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPDPae->a[iShw].u));
    779                         pgmPoolFree(pPool->CTX_SUFF(pVM),
    780                                     uShw.pPDPae->a[iShw].u & X86_PDE_PAE_PG_MASK,
    781                                     pPage->idx,
    782                                     iShw);
    783                         uShw.pPDPae->a[iShw].u = 0;
    784                     }
     797                    LogFlow(("pgmPoolMonitorChainChanging: pae pd iShw=%#x: %RX64 -> freeing it!\n", iShw, uShw.pPDPae->a[iShw].u));
     798                    pgmPoolFree(pPool->CTX_SUFF(pVM),
     799                                uShw.pPDPae->a[iShw].u & X86_PDE_PAE_PG_MASK,
     800                                pPage->idx,
     801                                iShw);
     802                    uShw.pPDPae->a[iShw].u = 0;
    785803                }
    786804                /* paranoia / a bit assumptive. */
     
    792810                    AssertReturnVoid(iShw2 < RT_ELEMENTS(uShw.pPDPae->a));
    793811
    794                     if (    iShw2 != iShw
    795                         &&  uShw.pPDPae->a[iShw2].u & PGM_PDFLAGS_MAPPING)
    796                     {
    797                         Assert(pgmMapAreMappingsEnabled(&pPool->CTX_SUFF(pVM)->pgm.s));
    798                         VM_FF_SET(pPool->CTX_SUFF(pVM), VM_FF_PGM_SYNC_CR3);
    799                         LogFlow(("pgmPoolMonitorChainChanging: Detected conflict at iShw2=%#x!\n", iShw2));
    800                     }
    801                     else
     812                    Assert(!(uShw.pPDPae->a[iShw2].u & PGM_PDFLAGS_MAPPING));
    802813                    if (uShw.pPDPae->a[iShw2].n.u1Present)
    803814                    {
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette