VirtualBox

Changeset 104947 in vbox


Ignore:
Timestamp:
Jun 17, 2024 8:23:40 PM (3 months ago)
Author:
vboxsync
Message:

VMM/IEM,tstVMStructSize: Made the IEM TLB size more easily configurable. Include the IEM statistics in the tstVMStructSize testcase so it can be run to figure out the correct paddings. bugref:10687

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/gvm.h

    r104886 r104947  
    148148#endif
    149149} GVMCPU;
    150 #if RT_GNUC_PREREQ(4, 6) && defined(__cplusplus)
    151 # pragma GCC diagnostic push
    152 #endif
    153 #if RT_GNUC_PREREQ(4, 3) && defined(__cplusplus)
    154 # pragma GCC diagnostic ignored "-Winvalid-offsetof"
    155 #endif
     150#ifndef IN_TSTVMSTRUCT
     151# if RT_GNUC_PREREQ(4, 6) && defined(__cplusplus)
     152#  pragma GCC diagnostic push
     153# endif
     154# if RT_GNUC_PREREQ(4, 3) && defined(__cplusplus)
     155#  pragma GCC diagnostic ignored "-Winvalid-offsetof"
     156# endif
    156157AssertCompileMemberAlignment(GVMCPU, idCpu,  16384);
    157158AssertCompileMemberAlignment(GVMCPU, gvmm,   64);
    158 #ifdef VBOX_WITH_NEM_R0
     159# ifdef VBOX_WITH_NEM_R0
    159160AssertCompileMemberAlignment(GVMCPU, nemr0,  64);
    160 #endif
     161# endif
    161162AssertCompileSizeAlignment(GVMCPU,           16384);
    162 #if RT_GNUC_PREREQ(4, 6) && defined(__cplusplus)
    163 # pragma GCC diagnostic pop
     163# if RT_GNUC_PREREQ(4, 6) && defined(__cplusplus)
     164#  pragma GCC diagnostic pop
     165# endif
    164166#endif
    165167
  • trunk/include/VBox/vmm/vm.h

    r104931 r104947  
    356356
    357357#ifndef VBOX_FOR_DTRACE_LIB
     358# ifndef IN_TSTVMSTRUCT
    358359/* Make sure the structure size is aligned on a 16384 boundary for arm64 purposes. */
    359360AssertCompileSizeAlignment(VMCPU, 16384);
     361# endif
    360362
    361363/** @name Operations on VMCPU::enmState
  • trunk/src/VBox/VMM/Config.kmk

    r101163 r104947  
    3636# Globals
    3737#
     38
     39VBOX_PATH_SRC_VMM := $(PATH_ROOT)/src/VBox/VMM
    3840
    3941## DEFS variable that is picked up by all three VMM targets (R0, R3, RC).
     
    134136# VMM_COMMON_DEFS += VBOX_WITH_NS_ACCOUNTING_STATS
    135137
     138
     139#
     140# Generate macro template for IEM instruction statistics.
     141#
     142# @param 1     The target name.
     143# @param 2     The dir to put the header in.
     144#
     145define def_VBoxGenIEMInstructionStatisticsTmpl_Header
     146$(1)_INTERMEDIATES += $(2)/IEMInstructionStatisticsTmpl.h
     147$(1)_CLEAN         += \
     148        $(2)/IEMInstructionStatisticsTmpl.h.ts \
     149        $(2)/IEMInstructionStatisticsTmpl.h
     150$$(call KB_FN_AUTO_CMD_DEPS,$(2)/IEMInstructionStatisticsTmpl.h.ts)
     151$(2)/IEMInstructionStatisticsTmpl.h.ts \
     152+| $(2)/IEMInstructionStatisticsTmpl.h: \
     153                $$(VBOX_PATH_SRC_VMM)/VMMAll/IEMAllInstCommon.cpp.h \
     154                $$(VBOX_PATH_SRC_VMM)/VMMAll/IEMAllInstOneByte.cpp.h \
     155                $$(VBOX_PATH_SRC_VMM)/VMMAll/IEMAllInstTwoByte0f.cpp.h \
     156                $$(VBOX_PATH_SRC_VMM)/VMMAll/IEMAllInstThree0f38.cpp.h \
     157                $$(VBOX_PATH_SRC_VMM)/VMMAll/IEMAllInstThree0f3a.cpp.h \
     158                $$(VBOX_PATH_SRC_VMM)/VMMAll/IEMAllInstVexMap1.cpp.h \
     159                $$(VBOX_PATH_SRC_VMM)/VMMAll/IEMAllInstVexMap2.cpp.h \
     160                $$(VBOX_PATH_SRC_VMM)/VMMAll/IEMAllInstVexMap3.cpp.h \
     161                $$(VBOX_PATH_SRC_VMM)/VMMAll/IEMAllInst3DNow.cpp.h
     162        $$(QUIET)$(call MSG_GENERATE,$(1),$$@,VMMAll/IEMAllInst*.cpp.h)
     163        $$(QUIET)$$(RM) -f -- "$$@.tmp" "$$@.tmp" "$$@.sorted"
     164        $$(QUIET)$$(MKDIR) -p -- "$$(dir $$@)"
     165        $$(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
     166        $$(QUIET)$$(SED) \
     167                -e '/IEMOP_MNEMONIC\(\|[01234]\|[01234]EX\)(/!d' \
     168                -e '/^ *# *define  *IEMOP_MNEMONIC/d' \
     169                -e ':look-for-end-of-invocation' \
     170                -e '/)/bend-of-invocation' \
     171                -e 'N' \
     172                -e 'blook-for-end-of-invocation' \
     173                -e ':end-of-invocation' \
     174                -e 's/\n/ /g' \
     175                -e 's/  */ /g' \
     176                -e 's/^.*IEMOP_MNEMONIC\(\|[01234]\|[01234]EX\)(/IEM_DO_INSTR_STAT\1(/' \
     177                -e 's/;.*$$(DOLLAR)//' \
     178                --output "$$@.tmp" $$(filter %.cpp.h,$$^)
     179# Windows sort does some kind of seeking. So, we must use a temporary file and kmk_cat to define and undefine our macros.
     180        $$(QUIET)$$(REDIRECT) -wto "$$@.sorted" -- sort "$$@.tmp"
     181        $$(QUIET)$$(APPEND) -nt "$$@" \
     182                '/* Warning autogenerated by VMM/Makefile.kmk. */ ' \
     183                '#define IEM_DO_INSTR_STAT0(f,u,l,fd,fi)                   IEM_DO_INSTR_STAT(l,  #l)' \
     184                '#define IEM_DO_INSTR_STAT1(f,u,l,o1,fd,fi)                IEM_DO_INSTR_STAT(l ## _ ## o1,                                   #l " " #o1)' \
     185                '#define IEM_DO_INSTR_STAT2(f,u,l,o1,o2,fd,fi)             IEM_DO_INSTR_STAT(l ## _ ## o1 ## _ ## o2,                        #l " " #o1 "," #o2)' \
     186                '#define IEM_DO_INSTR_STAT3(f,u,l,o1,o2,o3,fd,fi)          IEM_DO_INSTR_STAT(l ## _ ## o1 ## _ ## o2 ## _ ## o3,             #l " " #o1 "," #o2 "," #o3)' \
     187                '#define IEM_DO_INSTR_STAT4(f,u,l,o1,o2,o3,o4,fd,fi)       IEM_DO_INSTR_STAT(l ## _ ## o1 ## _ ## o2 ## _ ## o3 ## _ ## o4,  #l " " #o1 "," #o2 "," #o3 "," #o4)' \
     188                '#define IEM_DO_INSTR_STAT0EX(s,m,f,u,l,fd,fi)             IEM_DO_INSTR_STAT(s,m)' \
     189                '#define IEM_DO_INSTR_STAT1EX(s,m,f,u,l,o1,fd,fi)          IEM_DO_INSTR_STAT(s,m)' \
     190                '#define IEM_DO_INSTR_STAT2EX(s,m,f,u,l,o1,o2,fd,fi)       IEM_DO_INSTR_STAT(s,m)' \
     191                '#define IEM_DO_INSTR_STAT3EX(s,m,f,u,l,o1,o2,o3,fd,fi)    IEM_DO_INSTR_STAT(s,m)' \
     192                '#define IEM_DO_INSTR_STAT4EX(s,m,f,u,l,o1,o2,o3,o4,fd,fi) IEM_DO_INSTR_STAT(s,m)' \
     193               ''
     194        $$(QUIET)$$(REDIRECT) -ato "$$@" -- $$(CAT_EXT) "$$@.sorted"
     195        $$(QUIET)$$(APPEND) -n "$$@" \
     196                '' \
     197                '#undef IEM_DO_INSTR_STAT0' \
     198                '#undef IEM_DO_INSTR_STAT1' \
     199                '#undef IEM_DO_INSTR_STAT2' \
     200                '#undef IEM_DO_INSTR_STAT3' \
     201                '#undef IEM_DO_INSTR_STAT4' \
     202                '#undef IEM_DO_INSTR_STAT0EX' \
     203                '#undef IEM_DO_INSTR_STAT1EX' \
     204                '#undef IEM_DO_INSTR_STAT2EX' \
     205                '#undef IEM_DO_INSTR_STAT3EX' \
     206                '#undef IEM_DO_INSTR_STAT4EX' \
     207                ''
     208        $$(QUIET)$$(RM) -f -- "$$@.tmp" "$$@.sorted"
     209        $$(QUIET)$$(CP) -v -f --changed -- "$$@" "$$(patsubst %.ts,%,$$@)"
     210
     211endef
  • trunk/src/VBox/VMM/Makefile.kmk

    r104672 r104947  
    526526endif
    527527
    528 
    529 #
    530 # Generate macro template for IEM instruction statistics.
    531 #
    532 $(call KB_FN_DO_PASS0_ON_TARGET,VBoxVMM) # Set VBoxVMM_0_OUTDIR
    533 VBoxVMM_INTERMEDIATES += $(VBoxVMM_0_OUTDIR)/CommonGenIncs/IEMInstructionStatisticsTmpl.h
    534 VBoxVMM_CLEAN         += \
    535         $(VBoxVMM_0_OUTDIR)/CommonGenIncs/IEMInstructionStatisticsTmpl.h.ts \
    536         $(VBoxVMM_0_OUTDIR)/CommonGenIncs/IEMInstructionStatisticsTmpl.h
    537 $(call KB_FN_AUTO_CMD_DEPS,$(VBoxVMM_0_OUTDIR)/CommonGenIncs/IEMInstructionStatisticsTmpl.h.ts)
    538 $(VBoxVMM_0_OUTDIR)/CommonGenIncs/IEMInstructionStatisticsTmpl.h.ts \
    539 +| $(VBoxVMM_0_OUTDIR)/CommonGenIncs/IEMInstructionStatisticsTmpl.h: \
    540                 $(PATH_SUB_CURRENT)/VMMAll/IEMAllInstCommon.cpp.h \
    541                 $(PATH_SUB_CURRENT)/VMMAll/IEMAllInstOneByte.cpp.h \
    542                 $(PATH_SUB_CURRENT)/VMMAll/IEMAllInstTwoByte0f.cpp.h \
    543                 $(PATH_SUB_CURRENT)/VMMAll/IEMAllInstThree0f38.cpp.h \
    544                 $(PATH_SUB_CURRENT)/VMMAll/IEMAllInstThree0f3a.cpp.h \
    545                 $(PATH_SUB_CURRENT)/VMMAll/IEMAllInstVexMap1.cpp.h \
    546                 $(PATH_SUB_CURRENT)/VMMAll/IEMAllInstVexMap2.cpp.h \
    547                 $(PATH_SUB_CURRENT)/VMMAll/IEMAllInstVexMap3.cpp.h \
    548                 $(PATH_SUB_CURRENT)/VMMAll/IEMAllInst3DNow.cpp.h
    549         $(QUIET)$(call MSG_GENERATE,VBoxVMM,$@,VMMAll/IEMAllInst*.cpp.h)
    550         $(QUIET)$(RM) -f -- "$@.tmp" "$@.tmp" "$@.sorted"
    551         $(QUIET)$(MKDIR) -p -- "$(dir $@)"
    552         $(call KB_FN_AUTO_CMD_DEPS_COMMANDS)
    553         $(QUIET)$(SED) \
    554                 -e '/IEMOP_MNEMONIC\(\|[01234]\|[01234]EX\)(/!d' \
    555                 -e '/^ *# *define  *IEMOP_MNEMONIC/d' \
    556                 -e ':look-for-end-of-invocation' \
    557                 -e '/)/bend-of-invocation' \
    558                 -e 'N' \
    559                 -e 'blook-for-end-of-invocation' \
    560                 -e ':end-of-invocation' \
    561                 -e 's/\n/ /g' \
    562                 -e 's/  */ /g' \
    563                 -e 's/^.*IEMOP_MNEMONIC\(\|[01234]\|[01234]EX\)(/IEM_DO_INSTR_STAT\1(/' \
    564                 -e 's/;.*$(DOLLAR)//' \
    565                 --output "$@.tmp" $(filter %.cpp.h,$^)
    566 # Windows sort does some kind of seeking. So, we must use a temporary file and kmk_cat to define and undefine our macros.
    567         $(QUIET)$(REDIRECT) -wto "$@.sorted" -- sort "$@.tmp"
    568         $(QUIET)$(APPEND) -nt "$@" \
    569                 '/* Warning autogenerated by VMM/Makefile.kmk. */ ' \
    570                 '#define IEM_DO_INSTR_STAT0(f,u,l,fd,fi)                   IEM_DO_INSTR_STAT(l,  #l)' \
    571                 '#define IEM_DO_INSTR_STAT1(f,u,l,o1,fd,fi)                IEM_DO_INSTR_STAT(l ## _ ## o1,                                   #l " " #o1)' \
    572                 '#define IEM_DO_INSTR_STAT2(f,u,l,o1,o2,fd,fi)             IEM_DO_INSTR_STAT(l ## _ ## o1 ## _ ## o2,                        #l " " #o1 "," #o2)' \
    573                 '#define IEM_DO_INSTR_STAT3(f,u,l,o1,o2,o3,fd,fi)          IEM_DO_INSTR_STAT(l ## _ ## o1 ## _ ## o2 ## _ ## o3,             #l " " #o1 "," #o2 "," #o3)' \
    574                 '#define IEM_DO_INSTR_STAT4(f,u,l,o1,o2,o3,o4,fd,fi)       IEM_DO_INSTR_STAT(l ## _ ## o1 ## _ ## o2 ## _ ## o3 ## _ ## o4,  #l " " #o1 "," #o2 "," #o3 "," #o4)' \
    575                 '#define IEM_DO_INSTR_STAT0EX(s,m,f,u,l,fd,fi)             IEM_DO_INSTR_STAT(s,m)' \
    576                 '#define IEM_DO_INSTR_STAT1EX(s,m,f,u,l,o1,fd,fi)          IEM_DO_INSTR_STAT(s,m)' \
    577                 '#define IEM_DO_INSTR_STAT2EX(s,m,f,u,l,o1,o2,fd,fi)       IEM_DO_INSTR_STAT(s,m)' \
    578                 '#define IEM_DO_INSTR_STAT3EX(s,m,f,u,l,o1,o2,o3,fd,fi)    IEM_DO_INSTR_STAT(s,m)' \
    579                 '#define IEM_DO_INSTR_STAT4EX(s,m,f,u,l,o1,o2,o3,o4,fd,fi) IEM_DO_INSTR_STAT(s,m)' \
    580                ''
    581         $(QUIET)$(REDIRECT) -ato "$@" -- $(CAT_EXT) "$@.sorted"
    582         $(QUIET)$(APPEND) -n "$@" \
    583                 '' \
    584                 '#undef IEM_DO_INSTR_STAT0' \
    585                 '#undef IEM_DO_INSTR_STAT1' \
    586                 '#undef IEM_DO_INSTR_STAT2' \
    587                 '#undef IEM_DO_INSTR_STAT3' \
    588                 '#undef IEM_DO_INSTR_STAT4' \
    589                 '#undef IEM_DO_INSTR_STAT0EX' \
    590                 '#undef IEM_DO_INSTR_STAT1EX' \
    591                 '#undef IEM_DO_INSTR_STAT2EX' \
    592                 '#undef IEM_DO_INSTR_STAT3EX' \
    593                 '#undef IEM_DO_INSTR_STAT4EX' \
    594                 ''
    595         $(QUIET)$(RM) -f -- "$@.tmp" "$@.sorted"
    596         $(QUIET)$(CP) -v -f --changed -- "$@" "$(patsubst %.ts,%,$@)"
    597 
     528$(call KB_FN_DO_PASS0_ON_TARGET,VBoxVMM)
     529$(evalcall2 def_VBoxGenIEMInstructionStatisticsTmpl_Header,VBoxVMM,$(VBoxVMM_0_OUTDIR)/CommonGenIncs)
    598530foobar: $(VBoxVMM_0_OUTDIR)/CommonGenIncs/IEMInstructionStatisticsTmpl.h
     531
    599532
    600533ifdef VBOX_WITH_IEM_RECOMPILER
  • trunk/src/VBox/VMM/include/IEMInternal.h

    r104941 r104947  
    261261#ifndef RT_IN_ASSEMBLER /* ASM-NOINC-START - the rest of the file */
    262262
    263 # if !defined(IN_TSTVMSTRUCT) && !defined(DOXYGEN_RUNNING)
     263# if !defined(IEM_WITHOUT_INSTRUCTION_STATS) && !defined(DOXYGEN_RUNNING)
    264264/** Instruction statistics.   */
    265265typedef struct IEMINSTRSTATS
     
    517517                                     | IEMTLBE_F_PHYS_REV )
    518518
     519/** The TLB size (power of two).
     520 * We initially chose 256 because that way we can obtain the result directly
     521 * from a 8-bit register without an additional AND instruction.
     522 * See also @bugref{10687}. */
     523#define IEMTLB_ENTRY_COUNT                      256
     524#define IEMTLB_ENTRY_COUNT_AS_POWER_OF_TWO      8
     525AssertCompile(RT_BIT_32(IEMTLB_ENTRY_COUNT_AS_POWER_OF_TWO) == IEMTLB_ENTRY_COUNT);
    519526
    520527/**
     
    572579    uint32_t            au32Padding[6];
    573580
    574     /** The TLB entries.
    575      * We've choosen 256 because that way we can obtain the result directly from a
    576      * 8-bit register without an additional AND instruction. */
    577     IEMTLBENTRY         aEntries[256];
     581    /** The TLB entries. */
     582    IEMTLBENTRY         aEntries[IEMTLB_ENTRY_COUNT];
    578583} IEMTLB;
    579584AssertCompileSizeAlignment(IEMTLB, 64);
     
    607612 * @param   a_uTag      Value returned by IEMTLB_CALC_TAG.
    608613 */
    609 #define IEMTLB_TAG_TO_INDEX(a_uTag)         ( (uint8_t)(a_uTag) )
     614#if IEMTLB_ENTRY_COUNT == 256
     615# define IEMTLB_TAG_TO_INDEX(a_uTag)        ( (uint8_t)(a_uTag) )
     616#else
     617# define IEMTLB_TAG_TO_INDEX(a_uTag)        ( (a_uTag) & (IEMTLB_ENTRY_COUNT - 1U) )
     618AssertCompile(RT_IS_POWER_OF_TWO(IEMTLB_ENTRY_COUNT));
     619#endif
    610620/**
    611621 * Converts a TLB tag value into a TLB index.
     
    21642174    uint32_t                aStatInts[256];
    21652175
    2166 #if defined(VBOX_WITH_STATISTICS) && !defined(IN_TSTVMSTRUCT) && !defined(DOXYGEN_RUNNING)
     2176#if defined(VBOX_WITH_STATISTICS) && !defined(DOXYGEN_RUNNING) && !defined(IEM_WITHOUT_INSTRUCTION_STATS)
    21672177    /** Instruction statistics for ring-0/raw-mode. */
    21682178    IEMINSTRSTATS           StatsRZ;
  • trunk/src/VBox/VMM/include/IEMN8veRecompilerTlbLookup.h

    r104148 r104947  
    631631    AssertCompile(RTASSERT_OFFSET_OF(IEMTLB, uTlbPhysRev) < RTASSERT_OFFSET_OF(IEMTLB, aEntries));
    632632    AssertCompile(RTASSERT_OFFSET_OF(VMCPUCC, iem.s.DataTlb.aEntries) < _64K);
    633     AssertCompile(RTASSERT_OFFSET_OF(VMCPUCC, iem.s.CodeTlb.aEntries) < _64K); /* if larger do: ADD x3, x27, x3, LSL #y */
    634     pCodeBuf[off++] = Armv8A64MkInstrMovZ(pTlbState->idxReg4, offVCpuTlb + RT_UOFFSETOF(IEMTLB, aEntries));
    635     pCodeBuf[off++] = Armv8A64MkInstrAddReg(pTlbState->idxReg4, IEMNATIVE_REG_FIXED_PVMCPU, pTlbState->idxReg4);
     633    if (offVCpuTlb + RT_UOFFSETOF(IEMTLB, aEntries) < _64K)
     634    {
     635        pCodeBuf[off++] = Armv8A64MkInstrMovZ(pTlbState->idxReg4, offVCpuTlb + RT_UOFFSETOF(IEMTLB, aEntries));
     636        pCodeBuf[off++] = Armv8A64MkInstrAddReg(pTlbState->idxReg4, IEMNATIVE_REG_FIXED_PVMCPU, pTlbState->idxReg4);
     637    }
     638    else
     639    {
     640        AssertCompileMemberAlignment(VMCPUCC, iem.s.CodeTlb.aEntries, 64);
     641        AssertCompileMemberAlignment(IEMTLB, aEntries, 64);
     642        AssertCompile(RTASSERT_OFFSET_OF(VMCPUCC, iem.s.CodeTlb.aEntries) < _64K*64U);
     643        pCodeBuf[off++] = Armv8A64MkInstrMovZ(pTlbState->idxReg4, (offVCpuTlb + RT_UOFFSETOF(IEMTLB, aEntries)) >> 6);
     644        pCodeBuf[off++] = Armv8A64MkInstrAddReg(pTlbState->idxReg4, IEMNATIVE_REG_FIXED_PVMCPU, pTlbState->idxReg4,
     645                                                true /*64Bit*/, false /*fSetFlags*/, 6 /*cShift*/, kArmv8A64InstrShift_Lsl);
     646    }
    636647    pCodeBuf[off++] = Armv8A64MkInstrLdPairGpr(pTlbState->idxReg3, pTlbState->idxReg5, pTlbState->idxReg4,
    637648                                               (RT_OFFSETOF(IEMTLB, uTlbRevision) - RT_OFFSETOF(IEMTLB, aEntries)) / 8);
     
    649660# endif
    650661# if defined(RT_ARCH_AMD64)
     662#  if IEMTLB_ENTRY_COUNT == 256
    651663    /* movzx reg2, byte reg1 */
    652664    off = iemNativeEmitLoadGprFromGpr8Ex(pCodeBuf, off, pTlbState->idxReg2, pTlbState->idxReg1);
     665#  else
     666    /* mov   reg2, reg1 */
     667    off = iemNativeEmitLoadGprFromGpr32Ex(pCodeBuf, off, pTlbState->idxReg2, pTlbState->idxReg1);
     668    /* and   reg2, IEMTLB_ENTRY_COUNT - 1U */
     669    off = iemNativeEmitAndGpr32ByImmEx(pCodeBuf, off, pTlbState->idxReg2, IEMTLB_ENTRY_COUNT - 1U);
     670#  endif
    653671    /* shl   reg2, 5 ; reg2 *= sizeof(IEMTLBENTRY) */
    654672    AssertCompileSize(IEMTLBENTRY, 32);
     
    666684
    667685# elif defined(RT_ARCH_ARM64)
    668     /* reg2 = (reg1 & 0xff) << 5 */
    669     pCodeBuf[off++] = Armv8A64MkInstrUbfiz(pTlbState->idxReg2, pTlbState->idxReg1, 5, 8);
     686    /* reg2 = (reg1 & tlbmask) << 5 */
     687    pCodeBuf[off++] = Armv8A64MkInstrUbfiz(pTlbState->idxReg2, pTlbState->idxReg1, 5, IEMTLB_ENTRY_COUNT_AS_POWER_OF_TWO);
    670688#  ifdef IEMNATIVE_WITH_TLB_LOOKUP_LOAD_STORE_PAIR
    671689    /* reg2 += &pVCpu->iem.s.DataTlb.aEntries / CodeTlb.aEntries */
  • trunk/src/VBox/VMM/testcase/Makefile.kmk

    r104326 r104947  
    175175tstVMStructSize_INCS    = \
    176176        $(VBOX_PATH_VMM_SRC)/include \
    177         $(VBOX_PATH_VMM_SRC)/PATM \
     177        $(tstVMStructSize_0_OUTDIR) \
    178178        $(VBOX_VMM_TESTCASE_OUT_DIR)
    179179tstVMStructSize_SOURCES = tstVMStructSize.cpp
     
    184184 tstVMStructSize_DEFS  += VBOX_WITH_R0_LOGGING
    185185endif
     186$(call KB_FN_DO_PASS0_ON_TARGET,tstVMStructSize)
     187$(evalcall2 def_VBoxGenIEMInstructionStatisticsTmpl_Header,tstVMStructSize,$(tstVMStructSize_0_OUTDIR))
    186188
    187189tstAsmStructs_TEMPLATE  = VBoxR3AutoTest
     
    239241# Testcase for checking the C (IEMAllAImplC.cpp) and assembly (IEMAllAImpl.asm)
    240242# instruction emulation helpers.
    241 #
    242 # Note! The IN_TSTVMSTRUCT define is for avoiding IEMInstructionStatisticsTmpl.h.
    243243#
    244244TSTIEMAIMPL_TEST_DATA_DEPS := \
     
    654654
    655655tstIEMAImpl_TEMPLATE  = VBoxR3TstExe
    656 tstIEMAImpl_DEFS      = $(VMM_COMMON_DEFS) IEM_WITHOUT_ASSEMBLY IN_TSTVMSTRUCT
     656tstIEMAImpl_DEFS      = $(VMM_COMMON_DEFS) IEM_WITHOUT_ASSEMBLY IEM_WITHOUT_INSTRUCTION_STATS
    657657tstIEMAImpl_SDKS      = VBoxSoftFloatR3Shared
    658658tstIEMAImpl_INCS      = ../include .
     
    676676tstIEMAImplAsm_TEMPLATE      := VBoxR3TstExe
    677677tstIEMAImplAsm_SDKS          := VBoxSoftFloatR3Shared
    678 tstIEMAImplAsm_DEFS           = $(VMM_COMMON_DEFS) IEM_WITH_ASSEMBLY IN_TSTVMSTRUCT TSTIEMAIMPL_WITH_GENERATOR
     678tstIEMAImplAsm_DEFS           = $(VMM_COMMON_DEFS) IEM_WITH_ASSEMBLY IEM_WITHOUT_INSTRUCTION_STATS TSTIEMAIMPL_WITH_GENERATOR
    679679tstIEMAImplAsm_ASFLAGS.amd64 := -Werror
    680680tstIEMAImplAsm_ASFLAGS.x86   := -Werror
     
    700700tstIEMCheckMc_TEMPLATE  = VBoxR3TstExe
    701701tstIEMCheckMc_SOURCES   = tstIEMCheckMc.cpp
    702 tstIEMCheckMc_DEFS      = $(VMM_COMMON_DEFS)
     702tstIEMCheckMc_DEFS      = $(VMM_COMMON_DEFS) IEM_WITHOUT_INSTRUCTION_STATS
    703703tstIEMCheckMc_LIBS      = $(LIB_RUNTIME)
    704704ifeq ($(KBUILD_TARGET),win)
     
    974974  || defined(VBOX_WITH_DTRACE_RC))
    975975 tstVMStructDTrace_TEMPLATE = VBoxR3AutoTest
    976  tstVMStructDTrace_DEFS    = VBOX_IN_VMM IN_VMM_R3 IN_DIS $(VMM_COMMON_DEFS)
     976 tstVMStructDTrace_DEFS    = VBOX_IN_VMM IN_VMM_R3 IN_DIS $(VMM_COMMON_DEFS) IEM_WITHOUT_INSTRUCTION_STATS
    977977 ifdef VBOX_WITH_RAW_MODE
    978978  tstVMStructDTrace_DEFS  += VBOX_WITH_RAW_MODE
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