VirtualBox

Changeset 106920 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Nov 11, 2024 1:09:38 AM (3 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
165846
Message:

/Config.kmk,Devices/Makefile.kmk,VMM/*: Introducing VBOX_WITH_MINIMAL_R0 for win.arm64 and similar build configurations not really needing much from VMMR0.r0/VBoxSup.sys. jiraref:VBP-1449

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/Config.kmk

    r106061 r106920  
    4242# Can be prepended to by setting it in LocalConfig.kmk
    4343VMM_COMMON_DEFS := USING_VMM_COMMON_DEFS
     44ifdef VBOX_WITH_R0_MODULES
     45 VMM_COMMON_DEFS += VBOX_WITH_R0_MODULES
     46 ifdef VBOX_WITH_MINIMAL_R0
     47  VMM_COMMON_DEFS += VBOX_WITH_MINIMAL_R0
     48 endif
     49endif
    4450ifdef VBOX_WITH_HWVIRT
    4551 VMM_COMMON_DEFS += VBOX_WITH_HWVIRT
  • trunk/src/VBox/VMM/Makefile.kmk

    r106894 r106920  
    808808 $(VMMR0Imp_0_OUTDIR)/VMMR0.def: $(VMMR0Imp_DEFPATH)/VMMR0/VMMR0.def | $$(dir $$@)
    809809        $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
    810  ifeq ($(VBOX_LDR_FMT),lx)
    811         $(SED) \
    812                 -e '/not-os2/d' \
    813                 -e '/not-amd64/d' \
    814                 -e 's/^[ \t][ \t]*\([a-zA-Z]\)/    _\1/' \
    815                 -e 's/[ \t]DATA[ \t]*/ /'  \
    816                 --output $@ $(VMMR0Imp_DEFPATH)/VMMR0/VMMR0.def
    817         $(APPEND) "$@" ""
    818         $(APPEND) "$@" "    ___ehInit"
    819  else
    820810        $(SED) \
    821811                -e '/not-win/d' \
    822812                -e '/not-$(KBUILD_TARGET_ARCH)/d' \
    823813                --output $@ $(VMMR0Imp_DEFPATH)/VMMR0/VMMR0.def
    824  endif
    825814endif # R0: pe + lx
    826815
     
    875864 VMMR0_ASFLAGS.x86   := -Werror
    876865
    877  VMMR0_SDKS      = VBoxSoftFloatR0
     866 VMMR0_SDKS.amd64 = VBoxSoftFloatR0
    878867
    879868 VMMR0_INCS      = \
     
    883872 VMMR0_SOURCES   = \
    884873        VBoxVMM.d \
    885         VMMR0/CPUMR0.cpp \
    886         VMMR0/CPUMR0A.asm \
    887         VMMR0/DBGFR0.cpp \
    888         VMMR0/DBGFR0Bp.cpp \
    889         $(if-expr defined(VBOX_WITH_DBGF_TRACING), VMMR0/DBGFR0Tracer.cpp,) \
    890         VMMR0/GIMR0.cpp \
    891         VMMR0/GIMR0Hv.cpp \
    892         VMMR0/GMMR0.cpp \
    893874        VMMR0/GVMMR0.cpp \
    894         VMMR0/EMR0.cpp \
    895         VMMR0/HMR0.cpp \
    896         VMMR0/HMR0A.asm \
    897         VMMR0/HMR0UtilA.asm \
    898         VMMR0/HMVMXR0.cpp \
    899         VMMR0/HMSVMR0.cpp \
    900         VMMR0/IEMR0.cpp \
    901         VMMR0/IOMR0.cpp \
    902         VMMR0/IOMR0IoPort.cpp \
    903         VMMR0/IOMR0Mmio.cpp \
    904         VMMR0/PDMR0Device.cpp \
    905         VMMR0/PDMR0DevHlp.cpp \
    906         $(if-expr defined(VBOX_WITH_DBGF_TRACING), VMMR0/PDMR0DevHlpTracing.cpp,) \
    907         VMMR0/PDMR0Driver.cpp \
    908         VMMR0/PDMR0Queue.cpp \
    909         VMMR0/PGMR0.cpp \
    910         VMMR0/PGMR0Pool.cpp \
    911         VMMR0/PGMR0SharedPage.cpp \
    912         VMMR0/TMR0.cpp \
    913875        VMMR0/VMMR0.cpp \
    914         VMMRZ/CPUMRZ.cpp \
    915         VMMRZ/CPUMRZA.asm \
    916         VMMRZ/VMMRZ.cpp \
    917         VMMAll/APICAll.cpp \
    918         VMMAll/CPUMAllCpuId.cpp \
    919         VMMAll/CPUMAllRegs.cpp \
    920         VMMAll/CPUMAllMsrs.cpp \
    921         VMMAll/DBGFAll.cpp \
    922         VMMAll/DBGFAllBp.cpp \
    923         $(if-expr defined(VBOX_WITH_DBGF_TRACING), VMMAll/DBGFAllTracer.cpp,) \
    924         VMMAll/EMAll.cpp \
    925         VMMAll/GCMAll.cpp \
    926         VMMAll/GIMAll.cpp \
    927         VMMAll/GIMAllHv.cpp \
    928         VMMAll/GIMAllKvm.cpp \
    929         VMMAll/HMAll.cpp \
    930         VMMAll/HMSVMAll.cpp \
    931         VMMAll/HMVMXAll.cpp \
    932         VMMAll/IEMAll.cpp \
    933         VMMAll/IEMAllIntprTables1.cpp \
    934         VMMAll/IEMAllIntprTables2.cpp \
    935         VMMAll/IEMAllIntprTables3.cpp \
    936         VMMAll/IEMAllIntprTables4.cpp \
    937         $(if-expr !defined(IEM_WITHOUT_ASSEMBLY),VMMAll/IEMAllAImpl.asm,) \
    938         VMMAll/IEMAllAImplC.cpp \
    939         VMMAll/IEMAllCImpl.cpp \
    940         VMMAll/IEMAllCImplSvmInstr.cpp \
    941         VMMAll/IEMAllCImplVmxInstr.cpp \
    942         VMMAll/IEMAllDbg.cpp \
    943         VMMAll/IOMAll.cpp \
    944         VMMAll/IOMAllMmioNew.cpp \
    945         VMMAll/MMAll.cpp \
    946         VMMAll/NEMAll.cpp \
    947         VMMAll/PDMAll.cpp \
    948         VMMAll/PDMAllCritSect.cpp \
    949         VMMAll/PDMAllCritSectRw.cpp \
    950         VMMAll/PDMAllCritSectBoth.cpp \
    951         $(if-expr defined(VBOX_WITH_IOMMU_AMD) || defined(VBOX_WITH_IOMMU_INTEL), VMMAll/PDMAllIommu.cpp,) \
    952         VMMAll/PDMAllQueue.cpp \
    953         VMMAll/PDMAllTask.cpp \
    954         VMMAll/PGMAll.cpp \
    955         VMMAll/PGMAllHandler.cpp \
    956         VMMAll/PGMAllPhys.cpp \
    957         VMMAll/PGMAllPool.cpp \
    958         VMMAll/SELMAll.cpp \
    959         VMMAll/TMAll.cpp \
    960         VMMAll/TMAllCpu.cpp \
    961         VMMAll/TMAllReal.cpp \
    962         VMMAll/TMAllVirtual.cpp \
    963         VMMAll/TRPMAll.cpp \
    964         VMMAll/VMAll.cpp \
    965876        VMMAll/VMMAll.cpp \
    966         VMMAll/VMMAllA.asm
    967  if1of ($(VBOX_LDR_FMT), pe lx)
    968   VMMR0_SOURCES += $(VMMR0Imp_0_OUTDIR)/VMMR0.def
    969  endif
    970  ifdef VBOX_WITH_TRIPLE_FAULT_HACK
    971   VMMR0_SOURCES += \
    972         VMMR0/VMMR0TripleFaultHack.cpp \
    973         VMMR0/VMMR0TripleFaultHackA.asm
    974  endif
    975  ifdef VBOX_WITH_NETSHAPER
    976   VMMR0_SOURCES += \
    977         VMMAll/PDMAllNetShaper.cpp
    978  endif
     877        VMMRZ/VMMRZ.cpp
     878
    979879 VMMR0_SOURCES.amd64 = \
    980880        VMMR0/VMMR0JmpA-amd64.asm
    981881 VMMR0_SOURCES.x86 = \
    982882        VMMR0/VMMR0JmpA-x86.asm
     883
     884 VMMR0_SOURCES.win = \
     885        $(VMMR0Imp_0_OUTDIR)/VMMR0.def
     886
     887 ifndef VBOX_WITH_MINIMAL_R0
     888  VMMR0_SOURCES += \
     889        VMMR0/CPUMR0.cpp \
     890        VMMR0/DBGFR0.cpp \
     891        VMMR0/DBGFR0Bp.cpp \
     892        $(if-expr defined(VBOX_WITH_DBGF_TRACING), VMMR0/DBGFR0Tracer.cpp,) \
     893        VMMR0/GIMR0.cpp \
     894        VMMR0/GIMR0Hv.cpp \
     895        VMMR0/GMMR0.cpp \
     896        VMMR0/EMR0.cpp \
     897        VMMR0/HMR0.cpp \
     898        VMMR0/HMVMXR0.cpp \
     899        VMMR0/HMSVMR0.cpp \
     900        VMMR0/IEMR0.cpp \
     901        VMMR0/IOMR0.cpp \
     902        VMMR0/IOMR0IoPort.cpp \
     903        VMMR0/IOMR0Mmio.cpp \
     904        VMMR0/PDMR0Device.cpp \
     905        VMMR0/PDMR0DevHlp.cpp \
     906        $(if-expr defined(VBOX_WITH_DBGF_TRACING), VMMR0/PDMR0DevHlpTracing.cpp,) \
     907        VMMR0/PDMR0Driver.cpp \
     908        VMMR0/PDMR0Queue.cpp \
     909        VMMR0/PGMR0.cpp \
     910        VMMR0/PGMR0Pool.cpp \
     911        VMMR0/PGMR0SharedPage.cpp \
     912        VMMR0/TMR0.cpp \
     913        VMMRZ/CPUMRZ.cpp \
     914        VMMAll/APICAll.cpp \
     915        VMMAll/CPUMAllCpuId.cpp \
     916        VMMAll/CPUMAllRegs.cpp \
     917        VMMAll/CPUMAllMsrs.cpp \
     918        VMMAll/DBGFAll.cpp \
     919        VMMAll/DBGFAllBp.cpp \
     920        $(if-expr defined(VBOX_WITH_DBGF_TRACING), VMMAll/DBGFAllTracer.cpp,) \
     921        VMMAll/EMAll.cpp \
     922        VMMAll/GCMAll.cpp \
     923        VMMAll/GIMAll.cpp \
     924        VMMAll/GIMAllHv.cpp \
     925        VMMAll/GIMAllKvm.cpp \
     926        VMMAll/HMAll.cpp \
     927        VMMAll/HMSVMAll.cpp \
     928        VMMAll/HMVMXAll.cpp \
     929        VMMAll/IEMAll.cpp \
     930        VMMAll/IEMAllIntprTables1.cpp \
     931        VMMAll/IEMAllIntprTables2.cpp \
     932        VMMAll/IEMAllIntprTables3.cpp \
     933        VMMAll/IEMAllIntprTables4.cpp \
     934        VMMAll/IEMAllAImplC.cpp \
     935        VMMAll/IEMAllCImpl.cpp \
     936        VMMAll/IEMAllCImplSvmInstr.cpp \
     937        VMMAll/IEMAllCImplVmxInstr.cpp \
     938        VMMAll/IEMAllDbg.cpp \
     939        VMMAll/IOMAll.cpp \
     940        VMMAll/IOMAllMmioNew.cpp \
     941        VMMAll/MMAll.cpp \
     942        VMMAll/NEMAll.cpp \
     943        VMMAll/PDMAll.cpp \
     944        VMMAll/PDMAllCritSect.cpp \
     945        VMMAll/PDMAllCritSectRw.cpp \
     946        VMMAll/PDMAllCritSectBoth.cpp \
     947        $(if-expr defined(VBOX_WITH_IOMMU_AMD) || defined(VBOX_WITH_IOMMU_INTEL), VMMAll/PDMAllIommu.cpp,) \
     948        VMMAll/PDMAllQueue.cpp \
     949        VMMAll/PDMAllTask.cpp \
     950        VMMAll/PGMAll.cpp \
     951        VMMAll/PGMAllHandler.cpp \
     952        VMMAll/PGMAllPhys.cpp \
     953        VMMAll/PGMAllPool.cpp \
     954        VMMAll/SELMAll.cpp \
     955        VMMAll/TMAll.cpp \
     956        VMMAll/TMAllCpu.cpp \
     957        VMMAll/TMAllReal.cpp \
     958        VMMAll/TMAllVirtual.cpp \
     959        VMMAll/TRPMAll.cpp \
     960        VMMAll/VMAll.cpp
     961
     962  VMMR0_SOURCES.amd64 += \
     963        VMMR0/CPUMR0A.asm \
     964        VMMRZ/CPUMRZA.asm \
     965        VMMR0/HMR0A.asm \
     966        VMMR0/HMR0UtilA.asm \
     967        $(if-expr !defined(IEM_WITHOUT_ASSEMBLY),VMMAll/IEMAllAImpl.asm,) \
     968        VMMAll/VMMAllA.asm
     969
     970  ifdef VBOX_WITH_TRIPLE_FAULT_HACK
     971   VMMR0_SOURCES.amd64 += \
     972        VMMR0/VMMR0TripleFaultHack.cpp \
     973        VMMR0/VMMR0TripleFaultHackA.asm
     974  endif
     975  ifdef VBOX_WITH_NETSHAPER
     976   VMMR0_SOURCES += \
     977        VMMAll/PDMAllNetShaper.cpp
     978  endif
     979 endif # !VBOX_WITH_MINIMAL_R0
    983980
    984981 VMMR0_LIBS = \
  • trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp

    r106061 r106920  
    7878
    7979#include <iprt/asm.h>
    80 #include <iprt/asm-amd64-x86.h>
     80#ifdef RT_ARCH_AMD64
     81# include <iprt/asm-amd64-x86.h>
     82#endif
    8183#include <iprt/critsect.h>
    8284#include <iprt/mem.h>
     
    102104*   Defined Constants And Macros                                                                                                 *
    103105*********************************************************************************************************************************/
    104 #if defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_WINDOWS) || defined(DOXYGEN_RUNNING)
     106#if    (defined(RT_OS_LINUX) || defined(RT_OS_SOLARIS) || defined(RT_OS_WINDOWS) || defined(DOXYGEN_RUNNING)) \
     107    && !defined(VBOX_WITH_MINIMAL_R0)
    105108/** Define this to enable the periodic preemption timer. */
    106109# define GVMM_SCHED_WITH_PPT
     
    914917                        gvmmR0InitPerVMData(pGVM, iHandle, cCpus, pSession);
    915918                        pGVM->gvmm.s.VMMemObj  = hVMMemObj;
     919#ifndef VBOX_WITH_MINIMAL_R0
    916920                        rc = GMMR0InitPerVMData(pGVM);
    917921                        int rc2 = PGMR0InitPerVMData(pGVM, hVMMemObj);
     922#else
     923                        int rc2 = VINF_SUCCESS;
     924#endif
    918925                        int rc3 = VMMR0InitPerVMData(pGVM);
     926#ifndef VBOX_WITH_MINIMAL_R0
    919927                        CPUMR0InitPerVMData(pGVM);
    920928                        DBGFR0InitPerVMData(pGVM);
     
    922930                        IOMR0InitPerVMData(pGVM);
    923931                        TMR0InitPerVMData(pGVM);
     932#endif
    924933                        if (RT_SUCCESS(rc) && RT_SUCCESS(rc2) && RT_SUCCESS(rc3))
    925934                        {
     
    10301039                                            gvmmR0CreateDestroyUnlock(pGVMM);
    10311040
     1041#ifndef VBOX_WITH_MINIMAL_R0
    10321042                                            CPUMR0RegisterVCpuThread(&pGVM->aCpus[0]);
     1043#endif
    10331044
    10341045                                            *ppGVM = pGVM;
     
    13531364    }
    13541365
     1366#ifndef VBOX_WITH_MINIMAL_R0
    13551367    GMMR0CleanupVM(pGVM);
    1356 #ifdef VBOX_WITH_NEM_R0
     1368# ifdef VBOX_WITH_NEM_R0
    13571369    NEMR0CleanupVM(pGVM);
    1358 #endif
     1370# endif
    13591371    PDMR0CleanupVM(pGVM);
    13601372    IOMR0CleanupVM(pGVM);
     
    13621374    PGMR0CleanupVM(pGVM);
    13631375    TMR0CleanupVM(pGVM);
     1376#endif
    13641377    VMMR0CleanupVM(pGVM);
    13651378}
     
    16001613                    if (RT_SUCCESS(rc))
    16011614                    {
     1615#ifndef VBOX_WITH_MINIMAL_R0
    16021616                        CPUMR0RegisterVCpuThread(pGVCpu);
     1617#endif
    16031618
    16041619#ifdef GVMM_SCHED_WITH_HR_WAKE_UP_TIMER
  • trunk/src/VBox/VMM/VMMR0/VMMR0.cpp

    r106061 r106920  
    6363#include <VBox/log.h>
    6464
    65 #include <iprt/asm-amd64-x86.h>
     65#ifdef RT_ARCH_AMD64
     66# include <iprt/asm-amd64-x86.h>
     67#endif
    6668#include <iprt/assert.h>
    6769#include <iprt/crc.h>
     
    139141DECLEXPORT(int) ModuleInit(void *hMod)
    140142{
     143    RT_NOREF_PV(hMod);
     144
    141145#ifdef VBOX_WITH_DTRACE_R0
    142146    /*
     
    169173        if (RT_SUCCESS(rc))
    170174        {
     175#ifndef VBOX_WITH_MINIMAL_R0
    171176            rc = GMMR0Init();
    172177            if (RT_SUCCESS(rc))
     
    180185                    if (RT_SUCCESS(rc))
    181186                    {
     187#endif /* !VBOX_WITH_MINIMAL_R0 */
    182188                        rc = IntNetR0Init();
    183189                        if (RT_SUCCESS(rc))
    184190                        {
    185 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     191#ifndef VBOX_WITH_MINIMAL_R0
     192# ifdef VBOX_WITH_PCI_PASSTHROUGH
    186193                            rc = PciRawR0Init();
    187 #endif
     194# endif
    188195                            if (RT_SUCCESS(rc))
    189196                            {
     
    191198                                if (RT_SUCCESS(rc))
    192199                                {
    193 #ifdef VBOX_WITH_TRIPLE_FAULT_HACK
     200# ifdef VBOX_WITH_TRIPLE_FAULT_HACK
    194201                                    rc = vmmR0TripleFaultHackInit();
    195202                                    if (RT_SUCCESS(rc))
    196 #endif
     203# endif
    197204                                    {
    198 #ifdef VBOX_WITH_NEM_R0
     205# ifdef VBOX_WITH_NEM_R0
    199206                                        rc = NEMR0Init();
    200207                                        if (RT_SUCCESS(rc))
    201 #endif
     208# endif
     209#endif /* !VBOX_WITH_MINIMAL_R0 */
    202210                                        {
    203211                                            LogFlow(("ModuleInit: returns success\n"));
    204212                                            return VINF_SUCCESS;
    205213                                        }
     214
     215                                        /*
     216                                         * Bail out.
     217                                         */
     218#ifndef VBOX_WITH_MINIMAL_R0
    206219                                    }
    207 
    208                                     /*
    209                                      * Bail out.
    210                                      */
    211 #ifdef VBOX_WITH_TRIPLE_FAULT_HACK
     220# ifdef VBOX_WITH_TRIPLE_FAULT_HACK
    212221                                    vmmR0TripleFaultHackTerm();
    213 #endif
     222# endif
    214223                                }
    215224                                else
    216225                                    LogRel(("ModuleInit: CPUMR0ModuleInit -> %Rrc\n", rc));
    217 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     226# ifdef VBOX_WITH_PCI_PASSTHROUGH
    218227                                PciRawR0Term();
    219 #endif
     228# endif
    220229                            }
    221230                            else
    222231                                LogRel(("ModuleInit: PciRawR0Init -> %Rrc\n", rc));
    223232                            IntNetR0Term();
     233#endif /* !VBOX_WITH_MINIMAL_R0 */
    224234                        }
    225235                        else
    226236                            LogRel(("ModuleInit: IntNetR0Init -> %Rrc\n", rc));
     237#ifndef VBOX_WITH_MINIMAL_R0
    227238                        PGMDeregisterStringFormatTypes();
    228239                    }
     
    237248            else
    238249                LogRel(("ModuleInit: GMMR0Init -> %Rrc\n", rc));
     250#endif /* !VBOX_WITH_MINIMAL_R0 */
    239251            GVMMR0Term();
    240252        }
     
    259271DECLEXPORT(void) ModuleTerm(void *hMod)
    260272{
    261     NOREF(hMod);
    262273    LogFlow(("ModuleTerm:\n"));
    263 
     274    RT_NOREF_PV(hMod);
     275
     276#ifndef VBOX_WITH_MINIMAL_R0
    264277    /*
    265278     * Terminate the CPUM module (Local APIC cleanup).
    266279     */
    267280    CPUMR0ModuleTerm();
     281#endif
    268282
    269283    /*
     
    272286    IntNetR0Term();
    273287
     288#ifndef VBOX_WITH_MINIMAL_R0
    274289    /*
    275290     * PGM (Darwin), HM and PciRaw global cleanup.
    276291     */
    277 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     292# ifdef VBOX_WITH_PCI_PASSTHROUGH
    278293    PciRawR0Term();
    279 #endif
     294# endif
    280295    PGMDeregisterStringFormatTypes();
    281296    HMR0Term();
    282 #ifdef VBOX_WITH_TRIPLE_FAULT_HACK
     297# ifdef VBOX_WITH_TRIPLE_FAULT_HACK
    283298    vmmR0TripleFaultHackTerm();
     299# endif
     300# ifdef VBOX_WITH_NEM_R0
     301    NEMR0Term();
     302# endif
     303#endif /* !VBOX_WITH_MINIMAL_R0 */
     304
     305    /*
     306     * Destroy the GMM and GVMM instances.
     307     */
     308#ifndef VBOX_WITH_MINIMAL_R0
     309    GMMR0Term();
    284310#endif
    285 #ifdef VBOX_WITH_NEM_R0
    286     NEMR0Term();
    287 #endif
    288 
    289     /*
    290      * Destroy the GMM and GVMM instances.
    291      */
    292     GMMR0Term();
    293311    GVMMR0Term();
    294312
     
    448466    if (RT_SUCCESS(rc))
    449467    {
     468#ifndef VBOX_WITH_MINIMAL_R0
    450469        /*
    451470         * Init HM, CPUM and PGM.
     
    469488                            if (RT_SUCCESS(rc))
    470489                            {
    471 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     490# ifdef VBOX_WITH_PCI_PASSTHROUGH
    472491                                rc = PciRawR0InitVM(pGVM);
    473 #endif
     492# endif
    474493                                if (RT_SUCCESS(rc))
    475494                                {
     
    477496                                    if (RT_SUCCESS(rc))
    478497                                    {
     498#endif /* !VBOX_WITH_MINIMAL_R0 */
    479499                                        GVMMR0DoneInitVM(pGVM);
     500#ifndef VBOX_WITH_MINIMAL_R0
    480501                                        PGMR0DoneInitVM(pGVM);
     502#endif
    481503
    482504                                        /*
     
    488510
    489511                                        /* bail out*/
     512#ifndef VBOX_WITH_MINIMAL_R0
    490513                                        //GIMR0TermVM(pGVM);
    491514                                    }
    492 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     515# ifdef VBOX_WITH_PCI_PASSTHROUGH
    493516                                    PciRawR0TermVM(pGVM);
    494 #endif
     517# endif
    495518                                }
    496519                            }
     
    501524            HMR0TermVM(pGVM);
    502525        }
     526#endif /* !VBOX_WITH_MINIMAL_R0 */
    503527    }
    504528
     
    566590    }
    567591
    568 #ifdef VBOX_WITH_PCI_PASSTHROUGH
     592#ifndef VBOX_WITH_MINIMAL_R0
     593# ifdef VBOX_WITH_PCI_PASSTHROUGH
    569594    PciRawR0TermVM(pGVM);
     595# endif
    570596#endif
    571597
     
    575601    if (GVMMR0DoingTermVM(pGVM))
    576602    {
     603#ifndef VBOX_WITH_MINIMAL_R0
    577604        GIMR0TermVM(pGVM);
    578605
     
    580607         *        here to make sure we don't leak any shared pages if we crash... */
    581608        HMR0TermVM(pGVM);
     609#endif
    582610    }
    583611
     
    620648}
    621649
     650
     651#ifndef VBOX_WITH_MINIMAL_R0
    622652
    623653/**
     
    966996}
    967997
     998#endif /* !VBOX_WITH_MINIMAL_R0 */
    968999
    9691000/**
     
    10171048                VMCPU_FF_SET(pVCpu, VMCPU_FF_TO_R3);
    10181049
     1050#ifndef VBOX_WITH_MINIMAL_R0
    10191051            /* Invoke the HM-specific thread-context callback. */
    10201052            HMR0ThreadCtxCallback(enmEvent, pvUser);
     1053#endif
    10211054
    10221055            /* Restore preemption. */
     
    10271060        case RTTHREADCTXEVENT_OUT:
    10281061        {
     1062#ifndef VBOX_WITH_MINIMAL_R0
    10291063            /* Invoke the HM-specific thread-context callback. */
    10301064            HMR0ThreadCtxCallback(enmEvent, pvUser);
     1065#endif
    10311066
    10321067            /*
     
    10401075
    10411076        default:
     1077#ifndef VBOX_WITH_MINIMAL_R0
    10421078            /* Invoke the HM-specific thread-context callback. */
    10431079            HMR0ThreadCtxCallback(enmEvent, pvUser);
     1080#endif
    10441081            break;
    10451082    }
     
    10631100    Assert(pVCpu->vmmr0.s.hCtxHook == NIL_RTTHREADCTXHOOK);
    10641101
    1065 #if 1 /* To disable this stuff change to zero. */
     1102#ifndef VBOX_WITH_MINIMAL_R0
     1103
     1104# if 1 /* To disable this stuff change to zero. */
    10661105    int rc = RTThreadCtxHookCreate(&pVCpu->vmmr0.s.hCtxHook, 0, vmmR0ThreadCtxCallback, pVCpu);
    10671106    if (RT_SUCCESS(rc))
     
    10701109        return rc;
    10711110    }
    1072 #else
     1111# else
    10731112    RT_NOREF(vmmR0ThreadCtxCallback);
    10741113    int rc = VERR_NOT_SUPPORTED;
     1114# endif
    10751115#endif
    10761116
    10771117    pVCpu->vmmr0.s.hCtxHook = NIL_RTTHREADCTXHOOK;
    10781118    pVCpu->pGVM->vmm.s.fIsUsingContextHooks = false;
    1079     if (rc == VERR_NOT_SUPPORTED)
    1080         return VINF_SUCCESS;
    1081 
    1082     LogRelMax(32, ("RTThreadCtxHookCreate failed! rc=%Rrc pVCpu=%p idCpu=%RU32\n", rc, pVCpu, pVCpu->idCpu));
    1083     return VINF_SUCCESS; /* Just ignore it, we can live without context hooks. */
     1119#ifndef VBOX_WITH_MINIMAL_R0
     1120    if (rc != VERR_NOT_SUPPORTED) /* Just ignore it, we can live without context hooks. */
     1121        LogRelMax(32, ("RTThreadCtxHookCreate failed! rc=%Rrc pVCpu=%p idCpu=%RU32\n", rc, pVCpu, pVCpu->idCpu));
     1122#endif
     1123    return VINF_SUCCESS;
    10841124}
    10851125
     
    10931133VMMR0_INT_DECL(void) VMMR0ThreadCtxHookDestroyForEmt(PVMCPUCC pVCpu)
    10941134{
     1135#ifndef VBOX_WITH_MINIMAL_R0
    10951136    int rc = RTThreadCtxHookDestroy(pVCpu->vmmr0.s.hCtxHook);
    10961137    AssertRC(rc);
     1138#endif
    10971139    pVCpu->vmmr0.s.hCtxHook = NIL_RTTHREADCTXHOOK;
    10981140}
    10991141
     1142#ifndef VBOX_WITH_MINIMAL_R0
    11001143
    11011144/**
     
    11611204}
    11621205
     1206#endif /* !VBOX_WITH_MINIMAL_R0 */
    11631207
    11641208/**
     
    13801424    switch (enmOperation)
    13811425    {
     1426#ifndef VBOX_WITH_MINIMAL_R0
    13821427        /*
    13831428         * Run guest code using the available hardware acceleration technology.
     
    14201465                        GVMMR0SchedUpdatePeriodicPreemptionTimer(pGVM, pGVCpu->idHostCpu, TMCalcHostTimerFrequency(pGVM, pGVCpu));
    14211466
    1422 #ifdef VMM_R0_TOUCH_FPU
     1467# ifdef VMM_R0_TOUCH_FPU
    14231468                    /*
    14241469                     * Make sure we've got the FPU state loaded so and we don't need to clear
     
    14271472                     */
    14281473                    CPUMR0TouchHostFpu();
    1429 #endif
     1474# endif
    14301475                    int  rc;
    14311476                    bool fPreemptRestored = false;
     
    14791524                                rc = VERR_VMM_WRONG_HM_VMCPU_STATE;
    14801525                            }
    1481 #if 0
     1526# if 0
    14821527                            /** @todo Get rid of this. HM shouldn't disable the context hook. */
    14831528                            else if (RT_UNLIKELY(vmmR0ThreadCtxHookIsEnabled(pGVCpu)))
     
    14881533                                rc = VERR_VMM_CONTEXT_HOOK_STILL_ENABLED;
    14891534                            }
    1490 #endif
     1535# endif
    14911536
    14921537                            VMMRZCallRing3Disable(pGVCpu); /* Lazy bird: Simpler just disabling it again... */
     
    15341579                    /* Fire dtrace probe and collect statistics. */
    15351580                    VBOXVMM_R0_VMM_RETURN_TO_RING3_HM(pGVCpu, CPUMQueryGuestCtxPtr(pGVCpu), rc);
    1536 #ifdef VBOX_WITH_STATISTICS
     1581# ifdef VBOX_WITH_STATISTICS
    15371582                    vmmR0RecordRC(pGVM, pGVCpu, rc);
    1538 #endif
     1583# endif
    15391584                    VMMRZCallRing3Enable(pGVCpu);
    15401585
     
    15851630        }
    15861631
    1587 #ifdef VBOX_WITH_NEM_R0
    1588 # if defined(RT_ARCH_AMD64) && defined(RT_OS_WINDOWS)
     1632# ifdef VBOX_WITH_NEM_R0
     1633#  if defined(RT_ARCH_AMD64) && defined(RT_OS_WINDOWS)
    15891634        case VMMR0_DO_NEM_RUN:
    15901635        {
     
    15921637             * Setup the longjmp machinery and execute guest code (calls NEMR0RunGuestCode).
    15931638             */
    1594 ifdef VBOXSTRICTRC_STRICT_ENABLED
     1639 ifdef VBOXSTRICTRC_STRICT_ENABLED
    15951640            int rc = vmmR0CallRing3SetJmp2(&pGVCpu->vmmr0.s.AssertJmpBuf, (PFNVMMR0SETJMP2)NEMR0RunGuestCode, pGVM, idCpu);
    1596 else
     1641 else
    15971642            int rc = vmmR0CallRing3SetJmp2(&pGVCpu->vmmr0.s.AssertJmpBuf, NEMR0RunGuestCode, pGVM, idCpu);
    1598 endif
     1643 endif
    15991644            STAM_COUNTER_INC(&pGVM->vmm.s.StatRunGC);
    16001645
     
    16051650             */
    16061651            VBOXVMM_R0_VMM_RETURN_TO_RING3_NEM(pGVCpu, CPUMQueryGuestCtxPtr(pGVCpu), rc);
    1607 ifdef VBOX_WITH_STATISTICS
     1652 ifdef VBOX_WITH_STATISTICS
    16081653            vmmR0RecordRC(pGVM, pGVCpu, rc);
     1654#   endif
     1655            break;
     1656        }
    16091657#  endif
    1610             break;
    1611         }
    16121658# endif
    1613 #endif
     1659
     1660#endif /* !VBOX_WITH_MINIMAL_R0 */
    16141661
    16151662        /*
     
    18671914            break;
    18681915
     1916#ifndef VBOX_WITH_MINIMAL_R0
     1917
    18691918        /*
    18701919         * Attempt to enable hm mode and check the current setting.
     
    20282077            break;
    20292078
    2030 #ifdef VBOX_WITH_PAGE_SHARING
     2079# ifdef VBOX_WITH_PAGE_SHARING
    20312080        case VMMR0_DO_GMM_CHECK_SHARED_MODULES:
    20322081        {
     
    20392088            break;
    20402089        }
    2041 #endif
    2042 
    2043 #if defined(VBOX_STRICT) && HC_ARCH_BITS == 64
     2090# endif
     2091
     2092# if defined(VBOX_STRICT) && HC_ARCH_BITS == 64
    20442093        case VMMR0_DO_GMM_FIND_DUPLICATE_PAGE:
    20452094            if (u64Arg)
     
    20472096            rc = GMMR0FindDuplicatePageReq(pGVM, (PGMMFINDDUPLICATEPAGEREQ)pReqHdr);
    20482097            break;
    2049 #endif
     2098# endif
    20502099
    20512100        case VMMR0_DO_GMM_QUERY_STATISTICS:
     
    20602109            rc = GMMR0ResetStatisticsReq(pGVM, (PGMMRESETSTATISTICSSREQ)pReqHdr);
    20612110            break;
     2111
     2112#endif /* !VBOX_WITH_MINIMAL_R0 */
    20622113
    20632114        /*
     
    20882139        }
    20892140
     2141#ifndef VBOX_WITH_MINIMAL_R0
    20902142        /*
    20912143         * PDM Wrappers.
     
    21312183            break;
    21322184        }
     2185#endif /* !VBOX_WITH_MINIMAL_R0 */
    21332186
    21342187        /*
     
    21932246            break;
    21942247
    2195 #if 0 //def VBOX_WITH_PCI_PASSTHROUGH
     2248#if 0 //defined(VBOX_WITH_PCI_PASSTHROUGH) && !defined(VBOX_WITH_MINIMAL_R0)
    21962249        /*
    21972250         * Requests to host PCI driver service.
     
    22042257#endif
    22052258
     2259#ifndef VBOX_WITH_MINIMAL_R0
     2260
    22062261        /*
    22072262         * NEM requests.
    22082263         */
    2209 #ifdef VBOX_WITH_NEM_R0
    2210 # if defined(RT_ARCH_AMD64) && defined(RT_OS_WINDOWS)
     2264# ifdef VBOX_WITH_NEM_R0
     2265#  if defined(RT_ARCH_AMD64) && defined(RT_OS_WINDOWS)
    22112266        case VMMR0_DO_NEM_INIT_VM:
    22122267            if (u64Arg || pReqHdr || idCpu != 0)
     
    22632318            break;
    22642319
    2265 #   if 1 && defined(DEBUG_bird)
     2320#    if 1 && defined(DEBUG_bird)
    22662321        case VMMR0_DO_NEM_EXPERIMENT:
    22672322            if (pReqHdr)
     
    22692324            rc = NEMR0DoExperiment(pGVM, idCpu, u64Arg);
    22702325            break;
    2271 #   endif
     2326#    endif
     2327#  endif
    22722328# endif
    2273 #endif
    22742329
    22752330        /*
     
    23212376         * DBGF requests.
    23222377         */
    2323 #ifdef VBOX_WITH_DBGF_TRACING
     2378# ifdef VBOX_WITH_DBGF_TRACING
    23242379        case VMMR0_DO_DBGF_TRACER_CREATE:
    23252380        {
     
    23342389            if (!pReqHdr || u64Arg)
    23352390                return VERR_INVALID_PARAMETER;
    2336 # if 0 /** @todo */
     2391#  if 0 /** @todo */
    23372392            rc = DBGFR0TracerGenCallReqHandler(pGVM, (PDBGFTRACERGENCALLREQ)pReqHdr, idCpu);
    2338 # else
     2393#  else
    23392394            rc = VERR_NOT_IMPLEMENTED;
     2395#  endif
     2396            break;
     2397        }
    23402398# endif
    2341             break;
    2342         }
    2343 #endif
    23442399
    23452400        case VMMR0_DO_DBGF_BP_INIT:
     
    23942449            break;
    23952450        }
     2451
     2452#endif /* n!VBOX_WITH_MINIMAL_R0 */
    23962453
    23972454        /*
     
    24212478
    24222479
     2480#ifndef RT_ARCH_ARM64 /** @todo port vmmR0CallRing3SetJmpEx to ARM64 */
    24232481/**
    24242482 * This is just a longjmp wrapper function for VMMR0EntryEx calls.
     
    24372495                              pGVCpu->vmmr0.s.pSession);
    24382496}
     2497#endif
    24392498
    24402499
     
    24562515                            PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession)
    24572516{
     2517#ifndef RT_ARCH_ARM64 /** @todo port vmmR0CallRing3SetJmpEx to ARM64 - see RTAssertShouldPanic */
    24582518    /*
    24592519     * Requests that should only happen on the EMT thread will be
     
    24882548        return VERR_VM_THREAD_NOT_EMT;
    24892549    }
     2550#else
     2551    RT_NOREF(pVM);
     2552#endif
    24902553    return vmmR0EntryExWorker(pGVM, idCpu, enmOperation, pReq, u64Arg, pSession);
    24912554}
     
    31913254static bool vmmR0LoggerFlushInnerToParent(PVMMR0PERVCPULOGGER pR0Log, PRTLOGBUFFERDESC pBufDesc)
    31923255{
     3256#ifdef RT_ARCH_AMD64
    31933257    uint32_t const cbToFlush = pBufDesc->offBuf;
    31943258    if (pR0Log->fFlushToParentVmmDbg)
     
    31963260    if (pR0Log->fFlushToParentVmmRel)
    31973261        RTLogWriteVmm(pBufDesc->pchBuf, cbToFlush, true /*fRelease*/);
     3262#else
     3263    RT_NOREF(pR0Log, pBufDesc);
     3264#endif
    31983265    return true;
    31993266}
     
    36223689DECLEXPORT(bool) RTCALL RTAssertShouldPanic(void)
    36233690{
    3624 #if 0
     3691#ifdef RT_ARCH_ARM64 /** @todo port vmmR0CallRing3SetJmpEx/vmmR0CallRing3LongJmp to ARM64 */
    36253692    return true;
    36263693#else
  • trunk/src/VBox/VMM/VMMR0/VMMR0.def

    r106061 r106920  
    3030
    3131    ; code
    32     GIMGetMmio2Regions
    33     PDMQueueAlloc
    34     PDMQueueInsert
    35     PGMHandlerPhysicalPageTempOff
    36     PGMShwMakePageWritable
    37     PGMPhysSimpleWriteGCPhys
    38     PGMPhysSimpleReadGCPtr
    39     PGMPhysSimpleWriteGCPtr
    40     PGMPhysReadGCPtr
    41     PGMPhysWriteGCPtr
    42     PGMPhysSimpleDirtyWriteGCPtr
    43     PDMR0DeviceRegisterModule
    44     PDMR0DeviceDeregisterModule
    45     IOMMmioResetRegion
    46     IOMMmioMapMmio2Page
    47     RTLogDefaultInstance
    48     RTLogDefaultInstanceEx
    49     RTLogGetDefaultInstanceEx
    50     RTLogRelGetDefaultInstance
    51     RTLogRelGetDefaultInstanceEx
    52     RTLogLogger
    53     RTLogLoggerEx
    54     RTLogLoggerExV
    55     RTStrPrintf
    56     RTTimeMilliTS
    57     RTTraceBufAddMsgF
    58     RTTraceBufAddPos
    59     RTTraceBufAddPosMsgF
    60     TMTimerFromMilli
    61     TMTimerFromMicro
    62     TMTimerFromNano
    63     TMTimerGet
    64     TMTimerGetFreq
    65     TMTimerIsActive
    66     TMTimerIsLockOwner
    67     TMTimerLock
    68     TMTimerSet
    69     TMTimerSetRelative
    70     TMTimerSetMillies
    71     TMTimerSetMicro
    72     TMTimerSetNano
    73     TMTimerSetFrequencyHint
    74     TMTimerStop
    75     TMTimerUnlock
    76     VMMGetSvnRev
     32    GIMGetMmio2Regions                      ; not-arm64
     33    PDMQueueAlloc                           ; not-arm64
     34    PDMQueueInsert                          ; not-arm64
     35    PGMHandlerPhysicalPageTempOff           ; not-arm64
     36    PGMShwMakePageWritable                  ; not-arm64
     37    PGMPhysSimpleWriteGCPhys                ; not-arm64
     38    PGMPhysSimpleReadGCPtr                  ; not-arm64
     39    PGMPhysSimpleWriteGCPtr                 ; not-arm64
     40    PGMPhysReadGCPtr                        ; not-arm64
     41    PGMPhysWriteGCPtr                       ; not-arm64
     42    PGMPhysSimpleDirtyWriteGCPtr            ; not-arm64
     43    PDMR0DeviceRegisterModule               ; not-arm64
     44    PDMR0DeviceDeregisterModule             ; not-arm64
     45    IOMMmioResetRegion                      ; not-arm64
     46    IOMMmioMapMmio2Page                     ; not-arm64
     47    RTLogDefaultInstance                   
     48    RTLogDefaultInstanceEx                 
     49    RTLogGetDefaultInstanceEx               
     50    RTLogRelGetDefaultInstance             
     51    RTLogRelGetDefaultInstanceEx           
     52    RTLogLogger                             
     53    RTLogLoggerEx                           
     54    RTLogLoggerExV                         
     55    RTStrPrintf                             
     56    RTTimeMilliTS                           
     57    RTTraceBufAddMsgF                       
     58    RTTraceBufAddPos                       
     59    RTTraceBufAddPosMsgF                   
     60    TMTimerFromMilli                        ; not-arm64
     61    TMTimerFromMicro                        ; not-arm64
     62    TMTimerFromNano                         ; not-arm64
     63    TMTimerGet                              ; not-arm64
     64    TMTimerGetFreq                          ; not-arm64
     65    TMTimerIsActive                         ; not-arm64
     66    TMTimerIsLockOwner                      ; not-arm64
     67    TMTimerLock                             ; not-arm64
     68    TMTimerSet                              ; not-arm64
     69    TMTimerSetRelative                      ; not-arm64
     70    TMTimerSetMillies                       ; not-arm64
     71    TMTimerSetMicro                         ; not-arm64
     72    TMTimerSetNano                          ; not-arm64
     73    TMTimerSetFrequencyHint                 ; not-arm64
     74    TMTimerStop                             ; not-arm64
     75    TMTimerUnlock                           ; not-arm64
     76    VMMGetSvnRev                            ; not-arm64
    7777
    7878    ; Internal Networking
     
    9090    RTAssertMsg2Weak
    9191    RTAssertShouldPanic
    92     RTCrc32
    93     RTOnceSlow
    94     RTTimeNanoTSLegacySyncInvarNoDelta
    95     RTTimeNanoTSLegacySyncInvarWithDelta
    96     RTTimeNanoTSLegacyAsync
    97     RTTimeNanoTSLFenceSyncInvarNoDelta
    98     RTTimeNanoTSLFenceSyncInvarWithDelta
    99     RTTimeNanoTSLFenceAsync
     92    RTCrc32                                 ; not-arm64
     93    RTOnceSlow                             
     94    RTTimeNanoTSLegacySyncInvarNoDelta      ; not-arm64
     95    RTTimeNanoTSLegacySyncInvarWithDelta    ; not-arm64
     96    RTTimeNanoTSLegacyAsync                 ; not-arm64
     97    RTTimeNanoTSLFenceSyncInvarNoDelta      ; not-arm64
     98    RTTimeNanoTSLFenceSyncInvarWithDelta    ; not-arm64
     99    RTTimeNanoTSLFenceAsync                 ; not-arm64   
    100100    RTTimeSystemNanoTS
    101101    RTTimeNanoTS
    102     ASMMultU64ByU32DivByU32             ; not-os2
    103     ASMAtomicXchgU8                     ; not-x86
    104     ASMAtomicXchgU16                    ; not-x86
    105     ASMBitFirstSet                      ; not-x86
    106     ASMNopPause                         ; not-x86
    107     nocrt_memchr
    108     nocrt_memcmp
    109     nocrt_memcpy
    110     memcpy=nocrt_memcpy                 ; not-os2
    111     nocrt_memmove
    112     nocrt_memset
    113     memset=nocrt_memset                 ; not-os2
    114     nocrt_strcpy
    115     nocrt_strcmp
    116     nocrt_strchr
    117     nocrt_strlen
     102    ASMAtomicXchgU8                         ; not-arm64
     103    ASMAtomicXchgU16                        ; not-arm64
     104    ASMBitFirstSet                          ; not-arm64
     105    ASMNopPause                             ; not-arm64
     106    nocrt_memchr                            ; not-arm64
     107    nocrt_memcmp                            ; not-arm64
     108    nocrt_memcpy                            ; not-arm64
     109    memcpy=nocrt_memcpy                     ; not-arm64
     110    nocrt_memmove                           ; not-arm64
     111    nocrt_memset                            ; not-arm64
     112    memset=nocrt_memset                     ; not-arm64
     113    nocrt_strcpy                            ; not-arm64
     114    nocrt_strcmp                            ; not-arm64
     115    nocrt_strchr                            ; not-arm64
     116    nocrt_strlen                            ; not-arm64
    118117
  • trunk/src/VBox/VMM/VMMRZ/VMMRZ.cpp

    r106061 r106920  
    3636
    3737#include <iprt/assert.h>
    38 #include <iprt/asm-amd64-x86.h>
    3938#include <iprt/errcore.h>
    4039#include <iprt/string.h>
  • trunk/src/VBox/VMM/testcase/Makefile.kmk

    r106212 r106920  
    3939# Target lists.
    4040#
    41 PROGRAMS   += tstVMStructSize tstAsmStructs
     41PROGRAMS        += tstVMStructSize
     42PROGRAMS.amd64  += tstAsmStructs
    4243ifdef VBOX_WITH_RAW_MODE
    43  PROGRAMS  += tstVMStructRC tstAsmStructsRC
     44 PROGRAMS       += tstVMStructRC
     45 PROGRAMS.amd64 += tstAsmStructsRC
    4446endif
    4547if   !defined(VBOX_ONLY_EXTPACKS) \
     
    123125# validation testcases. Perhaps a bit hackish, but extremely useful.
    124126#
    125 ifeq ($(KBUILD_TARGET),$(KBUILD_HOST))
    126  ifeq ($(filter-out x86.x86 amd64.amd64 x86.amd64, $(KBUILD_TARGET_ARCH).$(KBUILD_HOST_ARCH)),)
    127   OTHERS += \
    128         $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
    129         $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
    130  endif
     127ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),$(KBUILD_HOST).$(KBUILD_HOST_ARCH))
     128 OTHERS       += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
     129 OTHERS.amd64 += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run
    131130endif
    132131
    133132# The normal testing pass.
    134 TESTING += \
    135         $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
    136         $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
     133TESTING       += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
     134TESTING.amd64 += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run
    137135
    138136OTHER_CLEAN += \
  • trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp

    r106061 r106920  
    386386
    387387    CHECK_PADDING_GVM(4, gvmm);
     388#ifndef VBOX_WITH_MINIMAL_R0
    388389    CHECK_PADDING_GVM(4, gmm);
     390#endif
    389391    CHECK_PADDING_GVMCPU(4, gvmm);
    390392
Note: See TracChangeset for help on using the changeset viewer.

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