summaryrefslogtreecommitdiff
path: root/src/VBox/VMM/Makefile.kmk
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/VMM/Makefile.kmk')
-rw-r--r--src/VBox/VMM/Makefile.kmk158
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
+