diff options
Diffstat (limited to 'src/VBox/VMM/Makefile.kmk')
| -rw-r--r-- | src/VBox/VMM/Makefile.kmk | 158 |
1 files changed, 106 insertions, 52 deletions
diff --git a/src/VBox/VMM/Makefile.kmk b/src/VBox/VMM/Makefile.kmk index 08e673f7..15d348f7 100644 --- a/src/VBox/VMM/Makefile.kmk +++ b/src/VBox/VMM/Makefile.kmk @@ -4,7 +4,7 @@ # # -# Copyright (C) 2006-2012 Oracle Corporation +# Copyright (C) 2006-2013 Oracle Corporation # # This file is part of VirtualBox Open Source Edition (OSE), as # available from http://www.virtualbox.org. This file is free software; @@ -20,7 +20,7 @@ include $(KBUILD_PATH)/subheader.kmk # Include sub-makefiles. ifndef VBOX_ONLY_EXTPACKS - include $(PATH_SUB_CURRENT)/Preload/Makefile.kmk + include $(PATH_SUB_CURRENT)/tools/Makefile.kmk endif include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk @@ -32,9 +32,12 @@ include $(PATH_SUB_CURRENT)/testcase/Makefile.kmk ## DEFS variable that is picked up by all three VMM targets. # Can be prepended to by setting it in LocalConfig.kmk VMM_COMMON_DEFS ?= VBOX_IN_VMM -ifdef VBOX_WITH_IEM - VMM_COMMON_DEFS += VBOX_WITH_IEM +ifdef VBOX_WITH_FIRST_IEM_STEP + VMM_COMMON_DEFS += VBOX_WITH_FIRST_IEM_STEP endif +#ifdef VBOX_WITH_IEM +# VMM_COMMON_DEFS += VBOX_WITH_IEM +#endif ifdef VBOX_WITH_REM VMM_COMMON_DEFS += VBOX_WITH_REM endif @@ -53,11 +56,28 @@ endif ifdef VBOX_WITH_DTRACE_RC VMM_COMMON_DEFS += VBOX_WITH_DTRACE_RC endif +ifdef VBOX_WITH_SAFE_STR + VMM_COMMON_DEFS += VBOX_WITH_SAFE_STR +endif +ifdef VBOX_WITH_RAW_RING1 + VMM_COMMON_DEFS += VBOX_WITH_RAW_RING1 +endif +ifdef VBOX_WITH_64ON32_IDT + VMM_COMMON_DEFS += VBOX_WITH_64ON32_IDT +endif +ifdef VBOX_WITH_64ON32_CMOS_DEBUG + VMM_COMMON_DEFS += VBOX_WITH_64ON32_CMOS_DEBUG +endif + # VMM_COMMON_DEFS += VBOX_WITH_NS_ACCOUNTING_STATS -# Special IEM debug mode which compares the result with REM. +# Special IEM debug mode which compares the result with HM/REM ifdef IEM_VERIFICATION_MODE - VMM_COMMON_DEFS += IEM_VERIFICATION_MODE IEM_VERIFICATION_MODE_FULL + VMM_COMMON_DEFS += IEM_VERIFICATION_MODE IEM_VERIFICATION_MODE_FULL IEM_VERIFICATION_MODE_FULL_HM +endif + +ifdef VBOX_WITH_NEW_MSR_CODE + VMM_COMMON_DEFS += VBOX_WITH_NEW_MSR_CODE endif @@ -94,13 +114,15 @@ VBoxVMM_DEFS.darwin.x86 = \ VBoxVMM_INCS = \ include \ - PATM + $(if-expr defined(VBOX_WITH_RAW_MODE),PATM,) VBoxVMM_ASINCS = . VBoxVMM_SOURCES = \ VBoxVMM.d \ VMMR3/CFGM.cpp \ VMMR3/CPUM.cpp \ + VMMR3/CPUMR3CpuId.cpp \ + VMMR3/CPUMR3Db.cpp \ VMMR3/CPUMDbg.cpp \ VMMR3/DBGF.cpp \ VMMR3/DBGFAddr.cpp \ @@ -115,11 +137,11 @@ VBoxVMM_SOURCES = \ VMMR3/DBGFOS.cpp \ VMMR3/DBGFReg.cpp \ VMMR3/DBGFStack.cpp \ - VMMR3/DBGFSym.cpp \ VMMR3/DBGFR3Trace.cpp \ VMMR3/EM.cpp \ - VMMR3/EMRaw.cpp \ - VMMR3/EMHwaccm.cpp \ + VMMR3/EMR3Dbg.cpp \ + $(if $(VBOX_WITH_RAW_MODE),VMMR3/EMRaw.cpp) \ + VMMR3/EMHM.cpp \ VMMR3/FTM.cpp \ VMMR3/IEMR3.cpp \ VMMR3/IOM.cpp \ @@ -159,17 +181,24 @@ VBoxVMM_SOURCES = \ VMMR3/VMMGuruMeditation.cpp \ VMMR3/VMMSwitcher.cpp \ VMMR3/VMMTests.cpp \ - VMMR3/HWACCM.cpp \ + VMMR3/HM.cpp \ + $(if-expr defined(VBOX_WITH_RAW_MODE), \ VMMR3/CSAM.cpp \ VMMR3/PATM.cpp \ VMMR3/PATMPatch.cpp \ VMMR3/PATMGuest.cpp \ VMMR3/PATMA.asm \ VMMR3/PATMSSM.cpp \ + VMMR3/PATMR3Dbg.cpp \ + ,) \ VMMAll/CPUMAllRegs.cpp \ + VMMAll/CPUMAllMsrs.cpp \ VMMAll/CPUMStack.cpp \ VMMAll/DBGFAll.cpp \ - VMMAll/HWACCMAll.cpp \ + VMMAll/HMAll.cpp \ + VMMAll/IEMAll.cpp \ + VMMAll/IEMAllAImpl.asm \ + VMMAll/IEMAllAImplC.cpp \ VMMAll/IOMAll.cpp \ VMMAll/IOMAllMMIO.cpp \ VMMAll/MMAll.cpp \ @@ -177,6 +206,8 @@ VBoxVMM_SOURCES = \ VMMAll/MMAllPagePool.cpp \ VMMAll/PDMAll.cpp \ VMMAll/PDMAllCritSect.cpp \ + VMMAll/PDMAllCritSectRw.cpp \ + VMMAll/PDMAllCritSectBoth.cpp \ VMMAll/PDMAllQueue.cpp \ VMMAll/PGMAll.cpp \ VMMAll/PGMAllHandler.cpp \ @@ -188,9 +219,6 @@ VBoxVMM_SOURCES = \ VMMAll/EMAll.cpp \ VMMAll/EMAllA.asm \ VMMAll/FTMAll.cpp \ - VMMAll/IEMAll.cpp \ - VMMAll/IEMAllAImpl.asm \ - VMMAll/IEMAllAImplC.cpp \ VMMAll/TMAll.cpp \ VMMAll/TMAllCpu.cpp \ VMMAll/TMAllReal.cpp \ @@ -199,8 +227,10 @@ VBoxVMM_SOURCES = \ VMMAll/VMAll.cpp \ VMMAll/VMMAll.cpp \ VMMAll/VMMAllA.asm \ + $(if-expr defined(VBOX_WITH_RAW_MODE), \ VMMAll/CSAMAll.cpp \ - VMMAll/PATMAll.cpp + VMMAll/PATMAll.cpp \ + ,) ifdef VBOX_WITH_VUSB VBoxVMM_SOURCES += VMMR3/PDMUsb.cpp endif @@ -213,16 +243,15 @@ ifdef VBOX_WITH_PDM_ASYNC_COMPLETION endif ifdef VBOX_WITH_NETSHAPER VBoxVMM_SOURCES += \ - VMMR3/PDMNetShaper.cpp + VMMR3/PDMNetShaper.cpp \ + VMMAll/PDMAllNetShaper.cpp endif ifdef VBOX_WITH_RAW_MODE VBoxVMM_SOURCES.x86 += \ VMMSwitcher/32BitTo32Bit.asm \ VMMSwitcher/32BitToPAE.asm \ - VMMSwitcher/32BitToAMD64.asm \ VMMSwitcher/PAETo32Bit.asm \ - VMMSwitcher/PAEToAMD64.asm \ VMMSwitcher/PAEToPAE.asm VBoxVMM_SOURCES.amd64 = \ VMMSwitcher/AMD64To32Bit.asm \ @@ -230,6 +259,12 @@ ifdef VBOX_WITH_RAW_MODE VBoxVMM_SOURCES.darwin.x86 += \ VMMSwitcher/AMD64ToPAE.asm endif +VBoxVMM_SOURCES.x86 += \ + VMMSwitcher/32BitToAMD64.asm \ + VMMSwitcher/PAEToAMD64.asm \ + VMMSwitcher/X86Stub.asm +VBoxVMM_SOURCES.amd64 += \ + VMMSwitcher/AMD64Stub.asm VBoxVMM_LIBS = \ $(PATH_STAGE_LIB)/DisasmR3$(VBOX_SUFF_LIB) @@ -242,7 +277,6 @@ VBoxVMM_LIBS += \ $(LIB_RUNTIME) VBoxVMM_LIBS.win = $(PATH_TOOL_$(VBOX_VCC_TOOL)_LIB)/delayimp.lib -VBoxVMM_LDFLAGS.win = /DELAYLOAD:dbghelp.dll VBoxVMM_LDFLAGS.linux = -Wl,--no-undefined VBoxVMM_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxVMM.dylib VBoxVMM_LDFLAGS.solaris = -mimpure-text @@ -340,6 +374,19 @@ endif # R0: pe + lx IMPORT_LIBS += VMMR3Imp $(call VBOX_GENERATE_IMPORT_TARGET_FN,VMMR3Imp,VBoxVMM,VMMR3/VMMR3.def) +ifneq ($(VBOX_LIB_VMM_LAZY),$(LIB_VMM)) + # + # VMMR3LazyImp.lib (experimental) + # + LIBRARIES += VMMR3LazyImp + VMMR3LazyImp_TEMPLATE = VBoxR3Dll + VMMR3LazyImp_INST = $(INST_LIB) + VMMR3LazyImp_SOURCES = $(VMMR3LazyImp_0_OUTDIR)/VMMR3LazyLoad.asm + VMMR3LazyImp_CLEAN = $(VMMR3LazyImp_0_OUTDIR)/VMMR3LazyLoad.asm + $$(VMMR3LazyImp_0_OUTDIR)/VMMR3LazyLoad.asm: $(PATH_SUB_CURRENT)/VMMR3/VMMR3.def $(VBOX_DEF_2_LAZY_LOAD) | $$(dir $$@) + $(VBOX_DEF_2_LAZY_LOAD) --output $@ --library VBoxVMM $< +endif + if defined(VBOX_WITH_RAW_MODE) && !defined(VBOX_ONLY_EXTPACKS) # @@ -361,7 +408,7 @@ if defined(VBOX_WITH_RAW_MODE) && !defined(VBOX_ONLY_EXTPACKS) VMMRC_INCS := \ include \ VMMRC \ - PATM + $(if-expr defined(VBOX_WITH_RAW_MODE),PATM,) VMMRC_LIBS = \ $(PATH_STAGE_LIB)/DisasmRC$(VBOX_SUFF_LIB) \ @@ -389,16 +436,20 @@ if defined(VBOX_WITH_RAW_MODE) && !defined(VBOX_ONLY_EXTPACKS) VMMRC/TRPMRCHandlersA.asm \ VMMRC/VMMRC.cpp \ VMMRC/VMMRCA.asm \ - VMMRC/HWACCMRCA.asm \ - VMMRC/CSAMRC.cpp \ + $(if-expr defined(VBOX_WITH_RAW_MODE), \ + VMMRC/CSAMRC.cpp \ VMMRC/PATMRC.cpp \ + ,) \ VMMRZ/DBGFRZ.cpp \ VMMRZ/PGMRZDynMap.cpp \ VMMRZ/VMMRZ.cpp \ VMMAll/CPUMAllRegs.cpp \ - VMMAll/CPUMAllA.asm \ + VMMAll/CPUMAllMsrs.cpp \ VMMAll/DBGFAll.cpp \ - VMMAll/IOMAll.cpp \ + VMMAll/IEMAll.cpp \ + VMMAll/IEMAllAImpl.asm \ + VMMAll/IEMAllAImplC.cpp \ + VMMAll/IOMAll.cpp \ VMMAll/IOMAllMMIO.cpp \ VMMAll/EMAll.cpp \ VMMAll/EMAllA.asm \ @@ -407,6 +458,8 @@ if defined(VBOX_WITH_RAW_MODE) && !defined(VBOX_ONLY_EXTPACKS) VMMAll/MMAllHyper.cpp \ VMMAll/PDMAll.cpp \ VMMAll/PDMAllCritSect.cpp \ + VMMAll/PDMAllCritSectRw.cpp \ + VMMAll/PDMAllCritSectBoth.cpp \ VMMAll/PDMAllQueue.cpp \ VMMAll/PGMAll.cpp \ VMMAll/PGMAllHandler.cpp \ @@ -423,20 +476,16 @@ if defined(VBOX_WITH_RAW_MODE) && !defined(VBOX_ONLY_EXTPACKS) VMMAll/VMAll.cpp \ VMMAll/VMMAll.cpp \ VMMAll/VMMAllA.asm \ - VMMAll/CSAMAll.cpp \ - VMMAll/PATMAll.cpp + $(if-expr defined(VBOX_WITH_RAW_MODE), \ + VMMAll/CSAMAll.cpp \ + VMMAll/PATMAll.cpp \ + ,) ifeq ($(VBOX_LDR_FMT32),pe) VMMRC_SOURCES += VMMRC/VMMRC.def endif ifeq ($(VBOX_LDR_FMT32),lx) VMMRC_SOURCES += $(VMMRCImp_0_OUTDIR)/VMMRC.def endif - ifdef VBOX_WITH_IEM - VMMRC_SOURCES += \ - VMMAll/IEMAll.cpp \ - VMMAll/IEMAllAImpl.asm \ - VMMAll/IEMAllAImplC.cpp - endif # the very last one. VMMRC_SOURCES += VMMRC/VMMRC99.asm @@ -456,9 +505,6 @@ ifndef VBOX_ONLY_EXTPACKS VMMR0_DEFS = IN_VMM_R0 IN_RT_R0 IN_DIS DIS_CORE_ONLY IN_GVMM_R0 IN_GMM_R0 IN_INTNET_R0 \ $(VMM_COMMON_DEFS) RTASSERT_HAVE_SHOULD_PANIC ## @todo eliminate IN_GVMM_R0 IN_GMM_R0 - ifdef VBOX_WITH_VMMR0_DISABLE_PREEMPTION - VMMR0_DEFS += VBOX_WITH_VMMR0_DISABLE_PREEMPTION - endif ifdef VBOX_WITH_PCI_PASSTHROUGH VMMR0_DEFS += IN_PCIRAW_R0 endif @@ -479,7 +525,7 @@ ifndef VBOX_ONLY_EXTPACKS endif VMMR0_INCS = \ include \ - PATM + $(if-expr defined(VBOX_WITH_RAW_MODE),PATM,) VMMR0_SOURCES = \ VBoxVMM.d \ @@ -487,10 +533,10 @@ ifndef VBOX_ONLY_EXTPACKS VMMR0/CPUMR0A.asm \ VMMR0/GMMR0.cpp \ VMMR0/GVMMR0.cpp \ - VMMR0/HWACCMR0.cpp \ - VMMR0/HWACCMR0A.asm \ - VMMR0/HWSVMR0.cpp \ - VMMR0/HWVMXR0.cpp \ + VMMR0/HMR0.cpp \ + VMMR0/HMR0A.asm \ + VMMR0/HMVMXR0.cpp \ + VMMR0/HMSVMR0.cpp \ VMMR0/PDMR0Device.cpp \ VMMR0/PDMR0Driver.cpp \ VMMR0/PGMR0.cpp \ @@ -500,14 +546,17 @@ ifndef VBOX_ONLY_EXTPACKS VMMR0/VMMR0.cpp \ VMMRZ/DBGFRZ.cpp \ VMMRZ/VMMRZ.cpp \ - VMMAll/CPUMAllA.asm \ VMMAll/CPUMAllRegs.cpp \ + VMMAll/CPUMAllMsrs.cpp \ VMMAll/CPUMStack.cpp \ VMMAll/DBGFAll.cpp \ VMMAll/EMAll.cpp \ VMMAll/EMAllA.asm \ VMMAll/FTMAll.cpp \ - VMMAll/HWACCMAll.cpp \ + VMMAll/HMAll.cpp \ + VMMAll/IEMAll.cpp \ + VMMAll/IEMAllAImpl.asm \ + VMMAll/IEMAllAImplC.cpp \ VMMAll/IOMAll.cpp \ VMMAll/IOMAllMMIO.cpp \ VMMAll/MMAll.cpp \ @@ -515,6 +564,8 @@ ifndef VBOX_ONLY_EXTPACKS VMMAll/MMAllPagePool.cpp \ VMMAll/PDMAll.cpp \ VMMAll/PDMAllCritSect.cpp \ + VMMAll/PDMAllCritSectRw.cpp \ + VMMAll/PDMAllCritSectBoth.cpp \ VMMAll/PDMAllQueue.cpp \ VMMAll/PGMAll.cpp \ VMMAll/PGMAllHandler.cpp \ @@ -539,15 +590,9 @@ ifndef VBOX_ONLY_EXTPACKS VMMR0/VMMR0TripleFaultHack.cpp \ VMMR0/VMMR0TripleFaultHackA.asm endif - ifdef VBOX_WITH_IEM - VMMR0_SOURCES += \ - VMMAll/IEMAll.cpp \ - VMMAll/IEMAllAImpl.asm \ - VMMAll/IEMAllAImplC.cpp - endif ifdef VBOX_WITH_NETSHAPER VMMR0_SOURCES += \ - VMMR0/PDMNetShaperR0.cpp + VMMAll/PDMAllNetShaper.cpp endif VMMR0_SOURCES.amd64 = \ VMMR0/VMMR0JmpA-amd64.asm @@ -573,9 +618,11 @@ ifndef VBOX_ONLY_EXTPACKS # LIBRARIES += SSMStandalone SSMStandalone_TEMPLATE = VBOXR3EXE - SSMStandalone_DEFS = IN_VMM_R3 IN_VMM_STATIC SSM_STANDALONE + SSMStandalone_DEFS = IN_VMM_R3 IN_VMM_STATIC SSM_STANDALONE CPUM_DB_STANDALONE SSMStandalone_INCS = include - SSMStandalone_SOURCES = VMMR3/SSM.cpp + SSMStandalone_SOURCES = \ + VMMR3/SSM.cpp \ + VMMR3/CPUMR3Db.cpp endif # !VBOX_ONLY_EXTPACKS @@ -653,6 +700,7 @@ endif # # Always optimize the interpreter. # +ifn1of ($(USERNAME),bird) if1of ($(KBUILD_TARGET), win) # -noover is recognized despite the statement saying otherwise. It silences these warnings: # cl : Command line warning D9025 : overriding '/Od' with '/O2' @@ -664,6 +712,11 @@ else #VMMAll/IEMAll.cpp_CXXFLAGS += -fno-reorder-blocks # Saves one or two percent ... never mind. VMMAll/IEMAll.cpp_CXXFLAGS += -fomit-frame-pointer # Omitting the frame pointer results in larger code, but it might be worth it. (esp addressing vs ebp?) endif +endif # bird wants good stacks + + +# Alias the CPU database entries. +$(foreach base,$(notdir $(basename $(wildcard $(PATH_SUB_CURRENT)/VMMR3/cpus/*.h))), $(eval $(base).o $(base).obj: CPUMR3Db.o)) include $(FILE_KBUILD_SUB_FOOTER) @@ -694,3 +747,4 @@ IEMAllCImplStrInstr.cpp.o IEMAllCImplStrInstr.cpp.obj: IEMAll.o PAEand32Bit.o PAEand32Bit.obj: PAETo32Bit.o PAEToPAE.o 32BitTo32Bit.o PAETo32Bit.o LegacyandAMD64.o LegacyandAMD64.obj: 32BitToAMD64.o PAEToAMD64.o AMD64andLegacy.o AMD64andLegacy.obj: AMD64To32Bit.o AMD64ToPAE.o + |
