VirtualBox

source: vbox/trunk/src/VBox/VMM/testcase/Makefile.kmk@ 108879

Last change on this file since 108879 was 108879, checked in by vboxsync, 5 weeks ago

VMM/testcase/tstPGMAllGst-armv8: Updates to the testcase, basic functionality is working, bugref:10388

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 45.9 KB
Line 
1# $Id: Makefile.kmk 108879 2025-04-08 09:14:30Z vboxsync $
2## @file
3# Sub-Makefile for the VMM testcases.
4#
5
6#
7# Copyright (C) 2006-2024 Oracle and/or its affiliates.
8#
9# This file is part of VirtualBox base platform packages, as
10# available from https://www.virtualbox.org.
11#
12# This program is free software; you can redistribute it and/or
13# modify it under the terms of the GNU General Public License
14# as published by the Free Software Foundation, in version 3 of the
15# License.
16#
17# This program is distributed in the hope that it will be useful, but
18# WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20# General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, see <https://www.gnu.org/licenses>.
24#
25# SPDX-License-Identifier: GPL-3.0-only
26#
27
28SUB_DEPTH = ../../../..
29include $(KBUILD_PATH)/subheader.kmk
30
31#
32# Include sub-makefiles.
33#
34if 0 # Not ready for general consumption yet.
35 include $(PATH_SUB_CURRENT)/Instructions/Makefile.kmk
36endif
37
38#
39# Target lists.
40#
41PROGRAMS += tstVMStructSize
42PROGRAMS.amd64 += tstAsmStructs
43ifdef VBOX_WITH_RAW_MODE
44 PROGRAMS += tstVMStructRC
45 PROGRAMS.amd64 += tstAsmStructsRC
46endif
47if !defined(VBOX_ONLY_EXTPACKS) \
48 && ( defined(VBOX_WITH_DTRACE_R3) \
49 || defined(VBOX_WITH_DTRACE_R0) \
50 || defined(VBOX_WITH_DTRACE_RC))
51 PROGRAMS += tstVMStructDTrace
52 INSTALLS += VMMLibDTraceStructTest
53endif
54ifndef VBOX_ONLY_EXTPACKS_USE_IMPLIBS
55 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
56 PROGRAMS += tstGlobalConfigHardened
57 DLL += tstGlobalConfig
58 else
59 PROGRAMS += tstGlobalConfig
60 endif
61
62 ifdef VBOX_WITH_RAW_MODE
63 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
64 PROGRAMS += tstVMMHardened
65 DLLS += tstVMM
66 else
67 PROGRAMS += tstVMM tstVMM-HM
68 endif
69 ifneq ($(KBUILD_TARGET),win)
70 PROGRAMS += tstVMMFork
71 endif
72 endif
73 ifdef VBOX_WITH_TESTCASES
74 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
75 PROGRAMS += tstCFGMHardened tstVMREQHardened tstAnimateHardened
76 DLLS += tstCFGM tstVMREQ tstAnimate
77 else
78 PROGRAMS += tstCFGM tstVMREQ tstAnimate
79 endif
80 PROGRAMS += \
81 tstCompressionBenchmark \
82 tstInt \
83 tstIEMCheckMc \
84 tstIEMAImpl \
85 tstPDMQueue \
86 tstSSM
87 PROGRAMS.amd64 += tstIEMAImplAsm
88 if defined(VBOX_WITH_IEM_NATIVE_RECOMPILER) && defined(VBOX_WITH_IEM_RECOMPILER)
89 PROGRAMS += tstIEMN8veProfiling
90 endif
91 if defined(VBOX_WITH_VIRT_ARMV8)
92 PROGRAMS += tstPGMAllGst-armv8
93 endif
94
95 if1of ($(KBUILD_TARGET_ARCH), amd64 x86)
96 PROGRAMS += \
97 tstVMMR0CallHost-1 \
98 tstX86-FpuSaveRestore
99 ifn1of ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH), solaris.x86 solaris.amd64 win.amd64) ## TODO: Fix the code.
100 PROGRAMS += tstX86-1
101 endif
102 endif
103 ifdef VBOX_WITH_RAW_MODE
104 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
105 PROGRAMS += tstMicroHardened
106 DLLS += tstMicro
107 else
108 PROGRAMS += tstMicro
109 endif
110 SYSMODS += tstMicroRC
111 endif
112 ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
113 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
114 PROGRAMS += tstPDMAsyncCompletionHardened tstPDMAsyncCompletionStressHardened
115 DLLS += tstPDMAsyncCompletion tstPDMAsyncCompletionStress
116 else
117 PROGRAMS += tstPDMAsyncCompletion tstPDMAsyncCompletionStress
118 endif
119 endif
120 endif # VBOX_WITH_TESTCASES
121endif # !VBOX_ONLY_EXTPACKS_USE_IMPLIBS
122
123# Where we put our temporary files (just for simplicity)
124VBOX_VMM_TESTCASE_OUT_DIR := $(PATH_TARGET)/VMM
125BLDDIRS += $(VBOX_VMM_TESTCASE_OUT_DIR)
126
127#
128# We setup two 'other' targets for executing the two structure & alignment
129# validation testcases. Perhaps a bit hackish, but extremely useful.
130#
131ifeq ($(KBUILD_TARGET).$(KBUILD_TARGET_ARCH),$(KBUILD_HOST).$(KBUILD_HOST_ARCH))
132 OTHERS += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
133 ## @todo kBuild bug: OTHERS.amd64 += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run
134 ifeq ($(KBUILD_TARGET_ARCH),amd64)
135 OTHERS += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run
136 endif
137endif
138
139# The normal testing pass.
140TESTING += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
141TESTING.amd64 += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run
142
143OTHER_CLEAN += \
144 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
145 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run \
146 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o \
147 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o.dep \
148 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac \
149 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac.o \
150 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac.lst \
151 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h \
152 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h \
153 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h
154
155#
156# Globals
157#
158VBOX_PATH_VMM_SRC = $(PATH_ROOT)/src/VBox/VMM
159
160#
161# Targets
162#
163ifdef VBOX_WITH_RAW_MODE
164 tstVMStructRC_TEMPLATE = VBoxRcExe
165 tstVMStructRC_DEFS = VBOX_VMM_TARGET_AGNOSTIC VBOX_IN_VMM IN_VMM_RC IN_DIS IN_RT_RC VBOX_WITH_RAW_MODE $(VMM_COMMON_DEFS)
166 ifdef VBOX_WITH_R0_LOGGING
167 tstVMStructRC_DEFS += VBOX_WITH_R0_LOGGING
168 endif
169 tstVMStructRC_SOURCES = tstVMStructRC.cpp
170 tstVMStructRC_INCS = \
171 $(VBOX_PATH_VMM_SRC)/include \
172 $(VBOX_PATH_VMM_SRC)/PATM
173endif
174
175tstVMStructSize_TEMPLATE = VBoxR3AutoTest
176ifneq ($(KBUILD_TARGET),win)
177 tstVMStructSize_CXXFLAGS += $(VBOX_GCC_Wno-invalid-offsetof)
178endif
179tstVMStructSize_DEFS = VBOX_VMM_TARGET_AGNOSTIC VBOX_IN_VMM IN_VMM_R3 IN_DIS $(VMM_COMMON_DEFS)
180ifdef VBOX_WITH_RAW_MODE
181 tstVMStructSize_DEFS += VBOX_WITH_RAW_MODE
182endif
183tstVMStructSize_INCS = \
184 $(VBOX_PATH_VMM_SRC)/include \
185 $(tstVMStructSize_0_OUTDIR) \
186 $(VBOX_VMM_TESTCASE_OUT_DIR)
187tstVMStructSize_SOURCES = tstVMStructSize.cpp
188ifdef VBOX_WITH_RAW_MODE
189 tstVMStructSize.cpp_DEPS = $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h
190endif
191ifdef VBOX_WITH_R0_LOGGING
192 tstVMStructSize_DEFS += VBOX_WITH_R0_LOGGING
193endif
194$(call KB_FN_DO_PASS0_ON_TARGET,tstVMStructSize)
195$(evalcall2 def_VBoxGenIEMInstructionStatisticsTmpl_Header,tstVMStructSize,$(tstVMStructSize_0_OUTDIR))
196
197tstAsmStructs_TEMPLATE = VBoxR3AutoTest
198ifneq ($(KBUILD_TARGET),win)
199 tstAsmStructSize_CXXFLAGS += $(VBOX_GCC_Wno-invalid-offsetof)
200endif
201tstAsmStructs_DEFS = VBOX_VMM_TARGET_AGNOSTIC VBOX_IN_VMM IN_VMM_R3 IN_DIS $(VMM_COMMON_DEFS)
202ifdef VBOX_WITH_RAW_MODE
203 tstAsmStructs_DEFS += VBOX_WITH_RAW_MODE
204endif
205ifdef VBOX_WITH_R0_LOGGING
206 tstAsmStructs_DEFS += VBOX_WITH_R0_LOGGING
207endif
208tstAsmStructs_INCS = \
209 $(VBOX_PATH_VMM_SRC)/include \
210 $(VBOX_VMM_TESTCASE_OUT_DIR)
211tstAsmStructs_SOURCES = tstAsmStructs.cpp
212tstAsmStructs.cpp_DEPS = $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h
213
214ifdef VBOX_WITH_RAW_MODE
215 tstAsmStructsRC_TEMPLATE = VBoxRcExe
216 tstAsmStructsRC_DEFS = VBOX_VMM_TARGET_AGNOSTIC VBOX_IN_VMM IN_VMM_RC IN_DIS IN_RT_RC VBOX_WITH_RAW_MODE $(VMM_COMMON_DEFS)
217 ifdef VBOX_WITH_R0_LOGGING
218 tstAsmStructsRC_DEFS += VBOX_WITH_R0_LOGGING
219 endif
220 tstAsmStructsRC_INCS = \
221 $(VBOX_PATH_VMM_SRC)/include \
222 $(VBOX_VMM_TESTCASE_OUT_DIR)
223 tstAsmStructsRC_SOURCES = tstAsmStructs.cpp
224 tstAsmStructs.cpp_DEPS += $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsRC.h
225endif # VBOX_WITH_RAW_MODE
226
227
228#
229# Global config tool.
230#
231if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
232 tstGlobalConfigHardened_TEMPLATE = VBoxR3HardenedTstExe
233 tstGlobalConfigHardened_NAME = tstGlobalConfig
234 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
235 tstGlobalConfigHardened_DEFS = PROGRAM_NAME_STR="tstGlobalConfig"
236 else
237 tstGlobalConfigHardened_DEFS = PROGRAM_NAME_STR=\"tstGlobalConfig\"
238 endif
239 tstGlobalConfigHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplateTestcase.cpp
240 tstGlobalConfig_TEMPLATE = VBoxR3HardenedTstDll
241else
242 tstGlobalConfig_TEMPLATE = VBoxR3SignedTstExe
243endif
244tstGlobalConfig_SOURCES = tstGlobalConfig.cpp
245tstGlobalConfig_LIBS = $(LIB_RUNTIME)
246
247
248#
249# Testcase for bencharmking
250#
251tstInt_TEMPLATE = VBoxR3SignedExe
252tstInt_DEFS = VBOX_VMM_TARGET_AGNOSTIC $(VMM_COMMON_DEFS) VBOX_SVN_REV=$(VBOX_SVN_REV)
253tstInt_SOURCES = tstInt.cpp
254tstInt_LIBS = $(LIB_RUNTIME)
255
256
257#
258# Testcase for checking the C (IEMAllAImplC.cpp) and assembly (IEMAllAImpl.asm)
259# instruction emulation helpers.
260#
261TSTIEMAIMPL_TEST_DATA_DEPS := \
262 tstIEMAImplDataInt-adcx_u32.bin.gz \
263 tstIEMAImplDataInt-adcx_u64.bin.gz \
264 tstIEMAImplDataInt-adc_u8.bin.gz \
265 tstIEMAImplDataInt-adc_u8_locked.bin.gz \
266 tstIEMAImplDataInt-adc_u16.bin.gz \
267 tstIEMAImplDataInt-adc_u16_locked.bin.gz \
268 tstIEMAImplDataInt-adc_u32.bin.gz \
269 tstIEMAImplDataInt-adc_u32_locked.bin.gz \
270 tstIEMAImplDataInt-adc_u64.bin.gz \
271 tstIEMAImplDataInt-adc_u64_locked.bin.gz \
272 tstIEMAImplDataInt-add_u8.bin.gz \
273 tstIEMAImplDataInt-add_u8_locked.bin.gz \
274 tstIEMAImplDataInt-add_u16.bin.gz \
275 tstIEMAImplDataInt-add_u16_locked.bin.gz \
276 tstIEMAImplDataInt-add_u32.bin.gz \
277 tstIEMAImplDataInt-add_u32_locked.bin.gz \
278 tstIEMAImplDataInt-add_u64.bin.gz \
279 tstIEMAImplDataInt-add_u64_locked.bin.gz \
280 tstIEMAImplDataInt-adox_u32.bin.gz \
281 tstIEMAImplDataInt-adox_u64.bin.gz \
282 tstIEMAImplDataInt-and_u8.bin.gz \
283 tstIEMAImplDataInt-and_u8_locked.bin.gz \
284 tstIEMAImplDataInt-and_u16.bin.gz \
285 tstIEMAImplDataInt-and_u16_locked.bin.gz \
286 tstIEMAImplDataInt-and_u32.bin.gz \
287 tstIEMAImplDataInt-and_u32_locked.bin.gz \
288 tstIEMAImplDataInt-and_u64.bin.gz \
289 tstIEMAImplDataInt-and_u64_locked.bin.gz \
290 tstIEMAImplDataInt-arpl.bin.gz \
291 tstIEMAImplDataInt-bsf_u16_amd.bin.gz \
292 tstIEMAImplDataInt-bsf_u16_intel.bin.gz \
293 tstIEMAImplDataInt-bsf_u32_amd.bin.gz \
294 tstIEMAImplDataInt-bsf_u32_intel.bin.gz \
295 tstIEMAImplDataInt-bsf_u64_amd.bin.gz \
296 tstIEMAImplDataInt-bsf_u64_intel.bin.gz \
297 tstIEMAImplDataInt-bsr_u16_amd.bin.gz \
298 tstIEMAImplDataInt-bsr_u16_intel.bin.gz \
299 tstIEMAImplDataInt-bsr_u32_amd.bin.gz \
300 tstIEMAImplDataInt-bsr_u32_intel.bin.gz \
301 tstIEMAImplDataInt-bsr_u64_amd.bin.gz \
302 tstIEMAImplDataInt-bsr_u64_intel.bin.gz \
303 tstIEMAImplDataInt-btc_u16.bin.gz \
304 tstIEMAImplDataInt-btc_u16_locked.bin.gz \
305 tstIEMAImplDataInt-btc_u32.bin.gz \
306 tstIEMAImplDataInt-btc_u32_locked.bin.gz \
307 tstIEMAImplDataInt-btc_u64.bin.gz \
308 tstIEMAImplDataInt-btc_u64_locked.bin.gz \
309 tstIEMAImplDataInt-btr_u16.bin.gz \
310 tstIEMAImplDataInt-btr_u16_locked.bin.gz \
311 tstIEMAImplDataInt-btr_u32.bin.gz \
312 tstIEMAImplDataInt-btr_u32_locked.bin.gz \
313 tstIEMAImplDataInt-btr_u64.bin.gz \
314 tstIEMAImplDataInt-btr_u64_locked.bin.gz \
315 tstIEMAImplDataInt-bts_u16.bin.gz \
316 tstIEMAImplDataInt-bts_u16_locked.bin.gz \
317 tstIEMAImplDataInt-bts_u32.bin.gz \
318 tstIEMAImplDataInt-bts_u32_locked.bin.gz \
319 tstIEMAImplDataInt-bts_u64.bin.gz \
320 tstIEMAImplDataInt-bts_u64_locked.bin.gz \
321 tstIEMAImplDataInt-bt_u16.bin.gz \
322 tstIEMAImplDataInt-bt_u32.bin.gz \
323 tstIEMAImplDataInt-bt_u64.bin.gz \
324 tstIEMAImplDataInt-cmp_u8.bin.gz \
325 tstIEMAImplDataInt-cmp_u16.bin.gz \
326 tstIEMAImplDataInt-cmp_u32.bin.gz \
327 tstIEMAImplDataInt-cmp_u64.bin.gz \
328 tstIEMAImplDataInt-dec_u8.bin.gz \
329 tstIEMAImplDataInt-dec_u8_locked.bin.gz \
330 tstIEMAImplDataInt-dec_u16.bin.gz \
331 tstIEMAImplDataInt-dec_u16_locked.bin.gz \
332 tstIEMAImplDataInt-dec_u32.bin.gz \
333 tstIEMAImplDataInt-dec_u32_locked.bin.gz \
334 tstIEMAImplDataInt-dec_u64.bin.gz \
335 tstIEMAImplDataInt-dec_u64_locked.bin.gz \
336 tstIEMAImplDataInt-div_u8_amd.bin.gz \
337 tstIEMAImplDataInt-div_u8_intel.bin.gz \
338 tstIEMAImplDataInt-div_u16_amd.bin.gz \
339 tstIEMAImplDataInt-div_u16_intel.bin.gz \
340 tstIEMAImplDataInt-div_u32_amd.bin.gz \
341 tstIEMAImplDataInt-div_u32_intel.bin.gz \
342 tstIEMAImplDataInt-div_u64_amd.bin.gz \
343 tstIEMAImplDataInt-div_u64_intel.bin.gz \
344 tstIEMAImplDataInt-idiv_u8_amd.bin.gz \
345 tstIEMAImplDataInt-idiv_u8_intel.bin.gz \
346 tstIEMAImplDataInt-idiv_u16_amd.bin.gz \
347 tstIEMAImplDataInt-idiv_u16_intel.bin.gz \
348 tstIEMAImplDataInt-idiv_u32_amd.bin.gz \
349 tstIEMAImplDataInt-idiv_u32_intel.bin.gz \
350 tstIEMAImplDataInt-idiv_u64_amd.bin.gz \
351 tstIEMAImplDataInt-idiv_u64_intel.bin.gz \
352 tstIEMAImplDataInt-imul_two_u16_amd.bin.gz \
353 tstIEMAImplDataInt-imul_two_u16_intel.bin.gz \
354 tstIEMAImplDataInt-imul_two_u32_amd.bin.gz \
355 tstIEMAImplDataInt-imul_two_u32_intel.bin.gz \
356 tstIEMAImplDataInt-imul_two_u64_amd.bin.gz \
357 tstIEMAImplDataInt-imul_two_u64_intel.bin.gz \
358 tstIEMAImplDataInt-imul_u8_amd.bin.gz \
359 tstIEMAImplDataInt-imul_u8_intel.bin.gz \
360 tstIEMAImplDataInt-imul_u16_amd.bin.gz \
361 tstIEMAImplDataInt-imul_u16_intel.bin.gz \
362 tstIEMAImplDataInt-imul_u32_amd.bin.gz \
363 tstIEMAImplDataInt-imul_u32_intel.bin.gz \
364 tstIEMAImplDataInt-imul_u64_amd.bin.gz \
365 tstIEMAImplDataInt-imul_u64_intel.bin.gz \
366 tstIEMAImplDataInt-inc_u8.bin.gz \
367 tstIEMAImplDataInt-inc_u8_locked.bin.gz \
368 tstIEMAImplDataInt-inc_u16.bin.gz \
369 tstIEMAImplDataInt-inc_u16_locked.bin.gz \
370 tstIEMAImplDataInt-inc_u32.bin.gz \
371 tstIEMAImplDataInt-inc_u32_locked.bin.gz \
372 tstIEMAImplDataInt-inc_u64.bin.gz \
373 tstIEMAImplDataInt-inc_u64_locked.bin.gz \
374 tstIEMAImplDataInt-mul_u8_amd.bin.gz \
375 tstIEMAImplDataInt-mul_u8_intel.bin.gz \
376 tstIEMAImplDataInt-mul_u16_amd.bin.gz \
377 tstIEMAImplDataInt-mul_u16_intel.bin.gz \
378 tstIEMAImplDataInt-mul_u32_amd.bin.gz \
379 tstIEMAImplDataInt-mul_u32_intel.bin.gz \
380 tstIEMAImplDataInt-mul_u64_amd.bin.gz \
381 tstIEMAImplDataInt-mul_u64_intel.bin.gz \
382 tstIEMAImplDataInt-neg_u8.bin.gz \
383 tstIEMAImplDataInt-neg_u8_locked.bin.gz \
384 tstIEMAImplDataInt-neg_u16.bin.gz \
385 tstIEMAImplDataInt-neg_u16_locked.bin.gz \
386 tstIEMAImplDataInt-neg_u32.bin.gz \
387 tstIEMAImplDataInt-neg_u32_locked.bin.gz \
388 tstIEMAImplDataInt-neg_u64.bin.gz \
389 tstIEMAImplDataInt-neg_u64_locked.bin.gz \
390 tstIEMAImplDataInt-not_u8.bin.gz \
391 tstIEMAImplDataInt-not_u8_locked.bin.gz \
392 tstIEMAImplDataInt-not_u16.bin.gz \
393 tstIEMAImplDataInt-not_u16_locked.bin.gz \
394 tstIEMAImplDataInt-not_u32.bin.gz \
395 tstIEMAImplDataInt-not_u32_locked.bin.gz \
396 tstIEMAImplDataInt-not_u64.bin.gz \
397 tstIEMAImplDataInt-not_u64_locked.bin.gz \
398 tstIEMAImplDataInt-or_u8.bin.gz \
399 tstIEMAImplDataInt-or_u8_locked.bin.gz \
400 tstIEMAImplDataInt-or_u16.bin.gz \
401 tstIEMAImplDataInt-or_u16_locked.bin.gz \
402 tstIEMAImplDataInt-or_u32.bin.gz \
403 tstIEMAImplDataInt-or_u32_locked.bin.gz \
404 tstIEMAImplDataInt-or_u64.bin.gz \
405 tstIEMAImplDataInt-or_u64_locked.bin.gz \
406 tstIEMAImplDataInt-rcl_u8_amd.bin.gz \
407 tstIEMAImplDataInt-rcl_u8_intel.bin.gz \
408 tstIEMAImplDataInt-rcl_u16_amd.bin.gz \
409 tstIEMAImplDataInt-rcl_u16_intel.bin.gz \
410 tstIEMAImplDataInt-rcl_u32_amd.bin.gz \
411 tstIEMAImplDataInt-rcl_u32_intel.bin.gz \
412 tstIEMAImplDataInt-rcl_u64_amd.bin.gz \
413 tstIEMAImplDataInt-rcl_u64_intel.bin.gz \
414 tstIEMAImplDataInt-rcr_u8_amd.bin.gz \
415 tstIEMAImplDataInt-rcr_u8_intel.bin.gz \
416 tstIEMAImplDataInt-rcr_u16_amd.bin.gz \
417 tstIEMAImplDataInt-rcr_u16_intel.bin.gz \
418 tstIEMAImplDataInt-rcr_u32_amd.bin.gz \
419 tstIEMAImplDataInt-rcr_u32_intel.bin.gz \
420 tstIEMAImplDataInt-rcr_u64_amd.bin.gz \
421 tstIEMAImplDataInt-rcr_u64_intel.bin.gz \
422 tstIEMAImplDataInt-rol_u8_amd.bin.gz \
423 tstIEMAImplDataInt-rol_u8_intel.bin.gz \
424 tstIEMAImplDataInt-rol_u16_amd.bin.gz \
425 tstIEMAImplDataInt-rol_u16_intel.bin.gz \
426 tstIEMAImplDataInt-rol_u32_amd.bin.gz \
427 tstIEMAImplDataInt-rol_u32_intel.bin.gz \
428 tstIEMAImplDataInt-rol_u64_amd.bin.gz \
429 tstIEMAImplDataInt-rol_u64_intel.bin.gz \
430 tstIEMAImplDataInt-ror_u8_amd.bin.gz \
431 tstIEMAImplDataInt-ror_u8_intel.bin.gz \
432 tstIEMAImplDataInt-ror_u16_amd.bin.gz \
433 tstIEMAImplDataInt-ror_u16_intel.bin.gz \
434 tstIEMAImplDataInt-ror_u32_amd.bin.gz \
435 tstIEMAImplDataInt-ror_u32_intel.bin.gz \
436 tstIEMAImplDataInt-ror_u64_amd.bin.gz \
437 tstIEMAImplDataInt-ror_u64_intel.bin.gz \
438 tstIEMAImplDataInt-sar_u8_amd.bin.gz \
439 tstIEMAImplDataInt-sar_u8_intel.bin.gz \
440 tstIEMAImplDataInt-sar_u16_amd.bin.gz \
441 tstIEMAImplDataInt-sar_u16_intel.bin.gz \
442 tstIEMAImplDataInt-sar_u32_amd.bin.gz \
443 tstIEMAImplDataInt-sar_u32_intel.bin.gz \
444 tstIEMAImplDataInt-sar_u64_amd.bin.gz \
445 tstIEMAImplDataInt-sar_u64_intel.bin.gz \
446 tstIEMAImplDataInt-sbb_u8.bin.gz \
447 tstIEMAImplDataInt-sbb_u8_locked.bin.gz \
448 tstIEMAImplDataInt-sbb_u16.bin.gz \
449 tstIEMAImplDataInt-sbb_u16_locked.bin.gz \
450 tstIEMAImplDataInt-sbb_u32.bin.gz \
451 tstIEMAImplDataInt-sbb_u32_locked.bin.gz \
452 tstIEMAImplDataInt-sbb_u64.bin.gz \
453 tstIEMAImplDataInt-sbb_u64_locked.bin.gz \
454 tstIEMAImplDataInt-shld_u16_amd.bin.gz \
455 tstIEMAImplDataInt-shld_u16_intel.bin.gz \
456 tstIEMAImplDataInt-shld_u32_amd.bin.gz \
457 tstIEMAImplDataInt-shld_u32_intel.bin.gz \
458 tstIEMAImplDataInt-shld_u64_amd.bin.gz \
459 tstIEMAImplDataInt-shld_u64_intel.bin.gz \
460 tstIEMAImplDataInt-shl_u8_amd.bin.gz \
461 tstIEMAImplDataInt-shl_u8_intel.bin.gz \
462 tstIEMAImplDataInt-shl_u16_amd.bin.gz \
463 tstIEMAImplDataInt-shl_u16_intel.bin.gz \
464 tstIEMAImplDataInt-shl_u32_amd.bin.gz \
465 tstIEMAImplDataInt-shl_u32_intel.bin.gz \
466 tstIEMAImplDataInt-shl_u64_amd.bin.gz \
467 tstIEMAImplDataInt-shl_u64_intel.bin.gz \
468 tstIEMAImplDataInt-shrd_u16_amd.bin.gz \
469 tstIEMAImplDataInt-shrd_u16_intel.bin.gz \
470 tstIEMAImplDataInt-shrd_u32_amd.bin.gz \
471 tstIEMAImplDataInt-shrd_u32_intel.bin.gz \
472 tstIEMAImplDataInt-shrd_u64_amd.bin.gz \
473 tstIEMAImplDataInt-shrd_u64_intel.bin.gz \
474 tstIEMAImplDataInt-shr_u8_amd.bin.gz \
475 tstIEMAImplDataInt-shr_u8_intel.bin.gz \
476 tstIEMAImplDataInt-shr_u16_amd.bin.gz \
477 tstIEMAImplDataInt-shr_u16_intel.bin.gz \
478 tstIEMAImplDataInt-shr_u32_amd.bin.gz \
479 tstIEMAImplDataInt-shr_u32_intel.bin.gz \
480 tstIEMAImplDataInt-shr_u64_amd.bin.gz \
481 tstIEMAImplDataInt-shr_u64_intel.bin.gz \
482 tstIEMAImplDataInt-sub_u8.bin.gz \
483 tstIEMAImplDataInt-sub_u8_locked.bin.gz \
484 tstIEMAImplDataInt-sub_u16.bin.gz \
485 tstIEMAImplDataInt-sub_u16_locked.bin.gz \
486 tstIEMAImplDataInt-sub_u32.bin.gz \
487 tstIEMAImplDataInt-sub_u32_locked.bin.gz \
488 tstIEMAImplDataInt-sub_u64.bin.gz \
489 tstIEMAImplDataInt-sub_u64_locked.bin.gz \
490 tstIEMAImplDataInt-test_u8.bin.gz \
491 tstIEMAImplDataInt-test_u16.bin.gz \
492 tstIEMAImplDataInt-test_u32.bin.gz \
493 tstIEMAImplDataInt-test_u64.bin.gz \
494 tstIEMAImplDataInt-xor_u8.bin.gz \
495 tstIEMAImplDataInt-xor_u8_locked.bin.gz \
496 tstIEMAImplDataInt-xor_u16.bin.gz \
497 tstIEMAImplDataInt-xor_u16_locked.bin.gz \
498 tstIEMAImplDataInt-xor_u32.bin.gz \
499 tstIEMAImplDataInt-xor_u32_locked.bin.gz \
500 tstIEMAImplDataInt-xor_u64.bin.gz \
501 tstIEMAImplDataInt-xor_u64_locked.bin.gz \
502 \
503 tstIEMAImplDataFpuBinary1-fadd_r80_by_r80.bin.gz \
504 tstIEMAImplDataFpuBinary1-fcomi_r80_by_r80.bin.gz \
505 tstIEMAImplDataFpuBinary1-fcom_r80_by_r80.bin.gz \
506 tstIEMAImplDataFpuBinary1-fdivr_r80_by_r80.bin.gz \
507 tstIEMAImplDataFpuBinary1-fdiv_r80_by_r80.bin.gz \
508 tstIEMAImplDataFpuBinary1-fmul_r80_by_r80.bin.gz \
509 tstIEMAImplDataFpuBinary1-fpatan_r80_by_r80_amd.bin.gz \
510 tstIEMAImplDataFpuBinary1-fpatan_r80_by_r80_intel.bin.gz \
511 tstIEMAImplDataFpuBinary1-fprem1_r80_by_r80.bin.gz \
512 tstIEMAImplDataFpuBinary1-fprem_r80_by_r80.bin.gz \
513 tstIEMAImplDataFpuBinary1-fscale_r80_by_r80.bin.gz \
514 tstIEMAImplDataFpuBinary1-fsubr_r80_by_r80.bin.gz \
515 tstIEMAImplDataFpuBinary1-fsub_r80_by_r80.bin.gz \
516 tstIEMAImplDataFpuBinary1-fucomi_r80_by_r80.bin.gz \
517 tstIEMAImplDataFpuBinary1-fucom_r80_by_r80.bin.gz \
518 tstIEMAImplDataFpuBinary1-fyl2xp1_r80_by_r80_amd.bin.gz \
519 tstIEMAImplDataFpuBinary1-fyl2xp1_r80_by_r80_intel.bin.gz \
520 tstIEMAImplDataFpuBinary1-fyl2x_r80_by_r80_amd.bin.gz \
521 tstIEMAImplDataFpuBinary1-fyl2x_r80_by_r80_intel.bin.gz \
522 tstIEMAImplDataFpuBinary2-fadd_r80_by_r32.bin.gz \
523 tstIEMAImplDataFpuBinary2-fadd_r80_by_r64.bin.gz \
524 tstIEMAImplDataFpuBinary2-fcom_r80_by_r32.bin.gz \
525 tstIEMAImplDataFpuBinary2-fcom_r80_by_r64.bin.gz \
526 tstIEMAImplDataFpuBinary2-fdivr_r80_by_r32.bin.gz \
527 tstIEMAImplDataFpuBinary2-fdivr_r80_by_r64.bin.gz \
528 tstIEMAImplDataFpuBinary2-fdiv_r80_by_r32.bin.gz \
529 tstIEMAImplDataFpuBinary2-fdiv_r80_by_r64.bin.gz \
530 tstIEMAImplDataFpuBinary2-fiadd_r80_by_i16.bin.gz \
531 tstIEMAImplDataFpuBinary2-fiadd_r80_by_i32.bin.gz \
532 tstIEMAImplDataFpuBinary2-ficom_r80_by_i16.bin.gz \
533 tstIEMAImplDataFpuBinary2-ficom_r80_by_i32.bin.gz \
534 tstIEMAImplDataFpuBinary2-fidivr_r80_by_i16.bin.gz \
535 tstIEMAImplDataFpuBinary2-fidivr_r80_by_i32.bin.gz \
536 tstIEMAImplDataFpuBinary2-fidiv_r80_by_i16.bin.gz \
537 tstIEMAImplDataFpuBinary2-fidiv_r80_by_i32.bin.gz \
538 tstIEMAImplDataFpuBinary2-fimul_r80_by_i16.bin.gz \
539 tstIEMAImplDataFpuBinary2-fimul_r80_by_i32.bin.gz \
540 tstIEMAImplDataFpuBinary2-fisubr_r80_by_i16.bin.gz \
541 tstIEMAImplDataFpuBinary2-fisubr_r80_by_i32.bin.gz \
542 tstIEMAImplDataFpuBinary2-fisub_r80_by_i16.bin.gz \
543 tstIEMAImplDataFpuBinary2-fisub_r80_by_i32.bin.gz \
544 tstIEMAImplDataFpuBinary2-fmul_r80_by_r32.bin.gz \
545 tstIEMAImplDataFpuBinary2-fmul_r80_by_r64.bin.gz \
546 tstIEMAImplDataFpuBinary2-fsubr_r80_by_r32.bin.gz \
547 tstIEMAImplDataFpuBinary2-fsubr_r80_by_r64.bin.gz \
548 tstIEMAImplDataFpuBinary2-fsub_r80_by_r32.bin.gz \
549 tstIEMAImplDataFpuBinary2-fsub_r80_by_r64.bin.gz \
550 tstIEMAImplDataFpuLdSt-fild_r80_from_i16.bin.gz \
551 tstIEMAImplDataFpuLdSt-fild_r80_from_i32.bin.gz \
552 tstIEMAImplDataFpuLdSt-fild_r80_from_i64.bin.gz \
553 tstIEMAImplDataFpuLdSt-fistt_r80_to_i16_amd.bin.gz \
554 tstIEMAImplDataFpuLdSt-fistt_r80_to_i16_intel.bin.gz \
555 tstIEMAImplDataFpuLdSt-fistt_r80_to_i32.bin.gz \
556 tstIEMAImplDataFpuLdSt-fistt_r80_to_i64.bin.gz \
557 tstIEMAImplDataFpuLdSt-fist_r80_to_i16.bin.gz \
558 tstIEMAImplDataFpuLdSt-fist_r80_to_i32.bin.gz \
559 tstIEMAImplDataFpuLdSt-fist_r80_to_i64.bin.gz \
560 tstIEMAImplDataFpuLdSt-fld1.bin.gz \
561 tstIEMAImplDataFpuLdSt-fldl2e.bin.gz \
562 tstIEMAImplDataFpuLdSt-fldl2t.bin.gz \
563 tstIEMAImplDataFpuLdSt-fldlg2.bin.gz \
564 tstIEMAImplDataFpuLdSt-fldln2.bin.gz \
565 tstIEMAImplDataFpuLdSt-fldpi.bin.gz \
566 tstIEMAImplDataFpuLdSt-fldz.bin.gz \
567 tstIEMAImplDataFpuLdSt-fld_r80_from_d80.bin.gz \
568 tstIEMAImplDataFpuLdSt-fld_r80_from_r32.bin.gz \
569 tstIEMAImplDataFpuLdSt-fld_r80_from_r64.bin.gz \
570 tstIEMAImplDataFpuLdSt-fld_r80_from_r80.bin.gz \
571 tstIEMAImplDataFpuLdSt-fst_r80_to_d80.bin.gz \
572 tstIEMAImplDataFpuLdSt-fst_r80_to_r32.bin.gz \
573 tstIEMAImplDataFpuLdSt-fst_r80_to_r64.bin.gz \
574 tstIEMAImplDataFpuLdSt-fst_r80_to_r80.bin.gz \
575 tstIEMAImplDataFpuOther-f2xm1_r80_amd.bin.gz \
576 tstIEMAImplDataFpuOther-f2xm1_r80_intel.bin.gz \
577 tstIEMAImplDataFpuOther-fabs_r80.bin.gz \
578 tstIEMAImplDataFpuOther-fchs_r80.bin.gz \
579 tstIEMAImplDataFpuOther-fcos_r80_amd.bin.gz \
580 tstIEMAImplDataFpuOther-fcos_r80_intel.bin.gz \
581 tstIEMAImplDataFpuOther-fptan_r80_r80_amd.bin.gz \
582 tstIEMAImplDataFpuOther-fptan_r80_r80_intel.bin.gz \
583 tstIEMAImplDataFpuOther-frndint_r80.bin.gz \
584 tstIEMAImplDataFpuOther-fsincos_r80_r80_amd.bin.gz \
585 tstIEMAImplDataFpuOther-fsincos_r80_r80_intel.bin.gz \
586 tstIEMAImplDataFpuOther-fsin_r80_amd.bin.gz \
587 tstIEMAImplDataFpuOther-fsin_r80_intel.bin.gz \
588 tstIEMAImplDataFpuOther-fsqrt_r80.bin.gz \
589 tstIEMAImplDataFpuOther-ftst_r80.bin.gz \
590 tstIEMAImplDataFpuOther-fxam_r80.bin.gz \
591 tstIEMAImplDataFpuOther-fxtract_r80_r80.bin.gz \
592 \
593 tstIEMAImplDataSseBinary-addps_u128.bin.gz \
594 tstIEMAImplDataSseBinary-mulps_u128.bin.gz \
595 tstIEMAImplDataSseBinary-subps_u128.bin.gz \
596 tstIEMAImplDataSseBinary-minps_u128.bin.gz \
597 tstIEMAImplDataSseBinary-divps_u128.bin.gz \
598 tstIEMAImplDataSseBinary-maxps_u128.bin.gz \
599 tstIEMAImplDataSseBinary-haddps_u128.bin.gz \
600 tstIEMAImplDataSseBinary-hsubps_u128.bin.gz \
601 tstIEMAImplDataSseBinary-sqrtps_u128.bin.gz \
602 tstIEMAImplDataSseBinary-addsubps_u128.bin.gz \
603 tstIEMAImplDataSseBinary-cvtps2pd_u128.bin.gz \
604 tstIEMAImplDataSseBinary-addpd_u128.bin.gz \
605 tstIEMAImplDataSseBinary-mulpd_u128.bin.gz \
606 tstIEMAImplDataSseBinary-subpd_u128.bin.gz \
607 tstIEMAImplDataSseBinary-minpd_u128.bin.gz \
608 tstIEMAImplDataSseBinary-divpd_u128.bin.gz \
609 tstIEMAImplDataSseBinary-maxpd_u128.bin.gz \
610 tstIEMAImplDataSseBinary-haddpd_u128.bin.gz \
611 tstIEMAImplDataSseBinary-hsubpd_u128.bin.gz \
612 tstIEMAImplDataSseBinary-sqrtpd_u128.bin.gz \
613 tstIEMAImplDataSseBinary-addsubpd_u128.bin.gz \
614 tstIEMAImplDataSseBinary-cvtpd2ps_u128.bin.gz \
615 tstIEMAImplDataSseBinary-addss_u128_r32.bin.gz \
616 tstIEMAImplDataSseBinary-addsd_u128_r64.bin.gz \
617 tstIEMAImplDataSseBinary-mulss_u128_r32.bin.gz \
618 tstIEMAImplDataSseBinary-mulsd_u128_r64.bin.gz \
619 tstIEMAImplDataSseBinary-subss_u128_r32.bin.gz \
620 tstIEMAImplDataSseBinary-subsd_u128_r64.bin.gz \
621 tstIEMAImplDataSseBinary-minss_u128_r32.bin.gz \
622 tstIEMAImplDataSseBinary-minsd_u128_r64.bin.gz \
623 tstIEMAImplDataSseBinary-divss_u128_r32.bin.gz \
624 tstIEMAImplDataSseBinary-divsd_u128_r64.bin.gz \
625 tstIEMAImplDataSseBinary-maxss_u128_r32.bin.gz \
626 tstIEMAImplDataSseBinary-maxsd_u128_r64.bin.gz \
627 tstIEMAImplDataSseBinary-cvtss2sd_u128_r32.bin.gz \
628 tstIEMAImplDataSseBinary-cvtsd2ss_u128_r64.bin.gz \
629 tstIEMAImplDataSseBinary-sqrtss_u128_r32.bin.gz \
630 tstIEMAImplDataSseBinary-sqrtsd_u128_r64.bin.gz \
631 tstIEMAImplDataSseBinary-cvttsd2si_i32_r64.bin.gz \
632 tstIEMAImplDataSseBinary-cvtsd2si_i32_r64.bin.gz \
633 tstIEMAImplDataSseBinary-cvttsd2si_i64_r64.bin.gz \
634 tstIEMAImplDataSseBinary-cvtsd2si_i64_r64.bin.gz \
635 tstIEMAImplDataSseBinary-cvttss2si_i32_r32.bin.gz \
636 tstIEMAImplDataSseBinary-cvtss2si_i32_r32.bin.gz \
637 tstIEMAImplDataSseBinary-cvttss2si_i64_r32.bin.gz \
638 tstIEMAImplDataSseBinary-cvtss2si_i64_r32.bin.gz \
639 tstIEMAImplDataSseBinary-cvtsi2ss_r32_i32.bin.gz \
640 tstIEMAImplDataSseBinary-cvtsi2ss_r32_i64.bin.gz \
641 tstIEMAImplDataSseBinary-cvtsi2sd_r64_i32.bin.gz \
642 tstIEMAImplDataSseBinary-cvtsi2sd_r64_i64.bin.gz \
643 tstIEMAImplDataSseCompare-ucomiss_u128.bin.gz \
644 tstIEMAImplDataSseCompare-vucomiss_u128.bin.gz \
645 tstIEMAImplDataSseCompare-comiss_u128.bin.gz \
646 tstIEMAImplDataSseCompare-vcomiss_u128.bin.gz \
647 tstIEMAImplDataSseCompare-ucomisd_u128.bin.gz \
648 tstIEMAImplDataSseCompare-vucomisd_u128.bin.gz \
649 tstIEMAImplDataSseCompare-comisd_u128.bin.gz \
650 tstIEMAImplDataSseCompare-vcomisd_u128.bin.gz \
651 tstIEMAImplDataSseCompare-cmpps_u128.bin.gz \
652 tstIEMAImplDataSseCompare-cmpss_u128.bin.gz \
653 tstIEMAImplDataSseCompare-cmppd_u128.bin.gz \
654 tstIEMAImplDataSseCompare-cmpsd_u128.bin.gz \
655 tstIEMAImplDataSseConvert-cvtdq2ps_u128.bin.gz \
656 tstIEMAImplDataSseConvert-cvtps2dq_u128.bin.gz \
657 tstIEMAImplDataSseConvert-cvttps2dq_u128.bin.gz \
658 tstIEMAImplDataSseConvert-cvtdq2pd_u128.bin.gz \
659 tstIEMAImplDataSseConvert-cvtpd2dq_u128.bin.gz \
660 tstIEMAImplDataSseConvert-cvttpd2dq_u128.bin.gz \
661 tstIEMAImplDataSseConvert-cvtpd2pi_u128.bin.gz \
662 tstIEMAImplDataSseConvert-cvttpd2pi_u128.bin.gz \
663 tstIEMAImplDataSseConvert-cvtpi2ps_u128.bin.gz \
664 tstIEMAImplDataSseConvert-cvtpi2pd_u128.bin.gz \
665 tstIEMAImplDataSseConvert-cvtps2pi_u128.bin.gz \
666 tstIEMAImplDataSseConvert-cvttps2pi_u128.bin.gz \
667 tstIEMAImplDataSsePcmpxstrx-pcmpistri_u128.bin.gz \
668 tstIEMAImplDataSsePcmpxstrx-pcmpistrm_u128.bin.gz \
669 tstIEMAImplDataSsePcmpxstrx-pcmpestri_u128.bin.gz \
670 tstIEMAImplDataSsePcmpxstrx-pcmpestrm_u128.bin.gz
671
672tstIEMAImpl_TEMPLATE = VBoxR3TstExe
673tstIEMAImpl_DEFS = VBOX_VMM_TARGET_X86 $(VMM_COMMON_DEFS) IEM_WITHOUT_ASSEMBLY IEM_WITHOUT_INSTRUCTION_STATS
674tstIEMAImpl_SDKS = VBoxSoftFloatR3Shared
675tstIEMAImpl_INCS = \
676 $(VBOX_PATH_VMM_SRC)/include \
677 $(VBOX_PATH_VMM_SRC) \
678 $(VBOX_PATH_VMM_SRC)/testcase
679tstIEMAImpl_SOURCES = \
680 tstIEMAImpl.cpp \
681 ../VMMAll/target-x86/IEMAllAImplC-x86.cpp \
682 $(tstIEMAImpl_CLEAN)
683tstIEMAImpl_SOURCES.x86 += tstIEMAImplDataSseBinary.asm
684tstIEMAImpl_SOURCES.amd64 += tstIEMAImplDataSseBinary.asm
685tstIEMAImplDataSseBinary.asm_DEPS = \
686 $(TSTIEMAIMPL_TEST_DATA_DEPS)
687
688tstIEMAImpl_SOURCES.arm64 = \
689 tstIEMAImplDataSseBinary.S \
690 ../VMMAll/target-x86/IEMAllAImpl-x86-arm64.S
691tstIEMAImplDataSseBinary.S_DEPS = \
692 $(TSTIEMAIMPL_TEST_DATA_DEPS)
693$(call KB_FN_DO_PASS0_ON_TARGET,tstIEMAImpl)
694
695# This variant mainly for generating data.
696tstIEMAImplAsm_TEMPLATE := VBoxR3TstExe
697tstIEMAImplAsm_SDKS := VBoxSoftFloatR3Shared
698tstIEMAImplAsm_DEFS = VBOX_VMM_TARGET_X86 $(VMM_COMMON_DEFS) IEM_WITH_ASSEMBLY IEM_WITHOUT_INSTRUCTION_STATS TSTIEMAIMPL_WITH_GENERATOR
699tstIEMAImplAsm_ASFLAGS.amd64 := -Werror
700tstIEMAImplAsm_ASFLAGS.x86 := -Werror
701tstIEMAImplAsm_INCS := \
702 $(VBOX_PATH_VMM_SRC)/include \
703 $(VBOX_PATH_VMM_SRC) \
704 $(VBOX_PATH_VMM_SRC)/testcase
705tstIEMAImplAsm_SOURCES = \
706 tstIEMAImpl.cpp \
707 ../VMMAll/target-x86/IEMAllAImpl-x86-amd64.asm \
708 ../VMMAll/target-x86/IEMAllAImplC-x86.cpp \
709 $(tstIEMAImpl_CLEAN)
710tstIEMAImplAsm_SOURCES.x86 += tstIEMAImplDataSseBinary.asm
711tstIEMAImplAsm_SOURCES.amd64 += tstIEMAImplDataSseBinary.asm
712tstIEMAImplDataSseBinary.asm_DEPS = \
713 $(TSTIEMAIMPL_TEST_DATA_DEPS)
714
715tstIEMAImplAsm_SOURCES.arm64 += tstIEMAImplDataSseBinary.S
716tstIEMAImplDataSseBinary.S_DEPS = \
717 $(TSTIEMAIMPL_TEST_DATA_DEPS)
718
719
720#
721# Testcase for checking the repurposing of the IEM instruction code.
722#
723tstIEMCheckMc_TEMPLATE = VBoxR3TstExe
724tstIEMCheckMc_SOURCES = tstIEMCheckMc.cpp
725tstIEMCheckMc_DEFS = VBOX_VMM_TARGET_X86 $(VMM_COMMON_DEFS) IEM_WITHOUT_INSTRUCTION_STATS
726tstIEMCheckMc_INCS := \
727 $(VBOX_PATH_VMM_SRC)/include \
728 $(VBOX_PATH_VMM_SRC)
729tstIEMCheckMc_LIBS = $(LIB_RUNTIME)
730ifeq ($(KBUILD_TARGET),win)
731 tstIEMCheckMc_CXXFLAGS = $(VBOX_C_CXX_FLAGS_NO_UNUSED_PARAMETERS) -wd4189 # local variable is initialized but not used.
732else
733 tstIEMCheckMc_CXXFLAGS = $(VBOX_C_CXX_FLAGS_NO_UNUSED_PARAMETERS) -Wno-unused-value -Wno-unused-variable -Wno-return-type
734endif
735
736#
737# Testcase for profiling the native recompiler.
738#
739tstIEMN8veProfiling_TEMPLATE := VBoxR3Exe
740tstIEMN8veProfiling_DEFS = VBOX_VMM_TARGET_AGNOSTIC $(VMM_COMMON_DEFS)
741tstIEMN8veProfiling_SOURCES := tstIEMN8veProfiling.cpp
742tstIEMN8veProfiling_LIBS = $(LIB_VMM) $(LIB_RUNTIME)
743
744#
745# Saved state manager testcase.
746#
747tstSSM_TEMPLATE = VBoxR3TstExe
748tstSSM_INCS = $(VBOX_PATH_VMM_SRC)/include
749tstSSM_DEFS = VBOX_VMM_TARGET_AGNOSTIC $(VMM_COMMON_DEFS)
750tstSSM_SOURCES = tstSSM.cpp
751tstSSM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
752
753#
754# VMM configuration manager tests.
755#
756if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
757 tstCFGMHardened_TEMPLATE = VBoxR3HardenedTstExe
758 tstCFGMHardened_NAME = tstCFGM
759 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
760 tstCFGMHardened_DEFS = PROGRAM_NAME_STR="tstCFGM"
761 else
762 tstCFGMHardened_DEFS = PROGRAM_NAME_STR=\"tstCFGM\"
763 endif
764 tstCFGMHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplateTestcase.cpp
765 tstCFGM_TEMPLATE = VBoxR3HardenedTstDll
766else
767 tstCFGM_TEMPLATE = VBoxR3SignedTstExe
768endif
769tstCFGM_DEFS = VBOX_VMM_TARGET_AGNOSTIC $(VMM_COMMON_DEFS)
770tstCFGM_SOURCES = tstCFGM.cpp
771tstCFGM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
772
773#
774# Comparing some compression algorithms considered for SSM usage.
775#
776tstCompressionBenchmark_TEMPLATE = VBoxR3TstExe
777tstCompressionBenchmark_SOURCES = tstCompressionBenchmark.cpp
778
779#
780# Two testcases for checking the ring-0 setjmp/longjmp code.
781#
782tstVMMR0CallHost-1_TEMPLATE = VBoxR3TstExe
783tstVMMR0CallHost-1_INCS = $(VBOX_PATH_VMM_SRC)/include
784tstVMMR0CallHost-1_SOURCES = \
785 tstVMMR0CallHost-1.cpp
786tstVMMR0CallHost-1_SOURCES.amd64 = \
787 $(VBOX_PATH_VMM_SRC)/VMMR0/VMMR0JmpA-amd64.asm
788tstVMMR0CallHost-1_SOURCES.x86 = \
789 $(VBOX_PATH_VMM_SRC)/VMMR0/VMMR0JmpA-x86.asm
790
791
792#
793# For testing the VM request queue code.
794#
795if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
796 tstVMREQHardened_TEMPLATE = VBoxR3HardenedExe
797 tstVMREQHardened_NAME = tstVMREQ
798 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
799 tstVMREQHardened_DEFS = PROGRAM_NAME_STR="tstVMREQ"
800 else
801 tstVMREQHardened_DEFS = PROGRAM_NAME_STR=\"tstVMREQ\"
802 endif
803 tstVMREQHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
804 tstVMREQ_TEMPLATE = VBoxR3Dll
805else
806 tstVMREQ_TEMPLATE = VBoxR3SignedExe
807endif
808tstVMREQ_DEFS = VBOX_VMM_TARGET_AGNOSTIC $(VMM_COMMON_DEFS)
809tstVMREQ_SOURCES = tstVMREQ.cpp
810tstVMREQ_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
811
812#
813# Tool for reanimate things like OS/2 dumps.
814#
815if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
816 tstAnimateHardened_TEMPLATE = VBoxR3HardenedExe
817 tstAnimateHardened_NAME = tstAnimate
818 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
819 tstAnimateHardened_DEFS = PROGRAM_NAME_STR="tstAnimate"
820 else
821 tstAnimateHardened_DEFS = PROGRAM_NAME_STR=\"tstAnimate\"
822 endif
823 tstAnimateHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
824 tstAnimate_TEMPLATE = VBoxR3Dll
825else
826 tstAnimate_TEMPLATE = VBoxR3SignedExe
827endif
828tstAnimate_DEFS = VBOX_VMM_TARGET_X86 $(VMM_COMMON_DEFS)
829tstAnimate_SOURCES = tstAnimate.cpp
830tstAnimate_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
831
832tstX86-1_TEMPLATE = VBoxR3TstExe
833tstX86-1_SOURCES = tstX86-1.cpp tstX86-1A.asm
834tstX86-1_LIBS = $(LIB_RUNTIME)
835tstX86-1_LDFLAGS.linux = $(VBOX_GCC_no-pie)
836
837tstX86-FpuSaveRestore_TEMPLATE = VBoxR3TstExe
838tstX86-FpuSaveRestore_SOURCES = tstX86-FpuSaveRestore.cpp tstX86-FpuSaveRestoreA.asm
839tstX86-FpuSaveRestore_LIBS = $(LIB_RUNTIME)
840
841ifdef VBOX_WITH_RAW_MODE
842
843 #
844 # Raw-mode VMM testcase.
845 #
846 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
847 tstVMMHardened_TEMPLATE = VBoxR3HardenedExe
848 tstVMMHardened_NAME = tstVMM
849 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
850 tstVMMHardened_DEFS = PROGRAM_NAME_STR="tstVMM"
851 else
852 tstVMMHardened_DEFS = PROGRAM_NAME_STR=\"tstVMM\"
853 endif
854 tstVMMHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
855 tstVMM_TEMPLATE = VBoxR3Dll
856 else
857 tstVMM_TEMPLATE = VBoxR3SignedExe
858 endif
859 tstVMM_SOURCES = tstVMM.cpp
860 tstVMM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
861
862 #
863 # HM VMM testcase.
864 #
865 tstVMM-HM_TEMPLATE = VBoxR3SignedExe
866 tstVMM-HM_SOURCES = tstVMM-HM.cpp
867 tstVMM-HM_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
868
869 #
870 # VMM host process fork test case (memory ++).
871 #
872 tstVMMFork_TEMPLATE = VBoxR3SignedExe
873 tstVMMFork_SOURCES = tstVMMFork.cpp
874 tstVMMFork_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
875
876 #
877 # Raw-mode micro benchmark.
878 #
879 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
880 tstMicroHardened_TEMPLATE = VBoxR3HardenedExe
881 tstMicroHardened_NAME = tstMicro
882 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
883 tstMicroHardened_DEFS = PROGRAM_NAME_STR="tstMicro"
884 else
885 tstMicroHardened_DEFS = PROGRAM_NAME_STR=\"tstMicro\"
886 endif
887 tstMicroHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
888 tstMicro_TEMPLATE = VBoxR3Dll
889 else
890 tstMicro_TEMPLATE = VBoxR3SignedExe
891 endif
892 tstMicro_SOURCES = tstMicro.cpp
893 tstMicro_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
894 tstMicro_DEFS = $(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,)
895
896 tstMicroRC_TEMPLATE = VBoxRc
897 tstMicroRC_SOURCES = tstMicroRC.cpp tstMicroRCA.asm
898 tstMicroRC_DEFS = $(if $(VBOX_WITH_RAW_MODE),VBOX_WITH_RAW_MODE,)
899 tstMicroRC_INCS = $(VBOX_PATH_VMM_SRC)/testcase
900 ifeq ($(VBOX_LDR_FMT32),pe)
901 tstMicroRC_LDFLAGS = -Entry:tstMicroRC
902 endif
903 tstMicroRC_SYSSUFF = .gc
904 tstMicroRC_LIBS = \
905 $(PATH_STAGE_LIB)/DisasmRC$(VBOX_SUFF_LIB) \
906 $(PATH_STAGE_LIB)/RuntimeRC$(VBOX_SUFF_LIB)
907 ifeq ($(filter-out pe lx,$(VBOX_LDR_FMT32)),)
908 tstMicroRC_LIBS += \
909 $(PATH_STAGE_LIB)/VMMRCBuiltin$(VBOX_SUFF_LIB) \
910 $(LIB_VMMRC)
911 endif
912 tstMicroRC_SOURCES.win = tstMicroRC.def
913
914endif # VBOX_WITH_RAW_MODE
915
916
917if !defined(VBOX_ONLY_EXTPACKS_USE_IMPLIBS)
918 #
919 # Special NEM host testcase.
920 #
921 if ("$(KBUILD_TARGET_ARCH).$(KBUILD_TARGET_ARCH)" == "darwin.amd64" && (defined(VBOX_WITH_NATIVE_NEM) || "$(USERNAME)" == "bird")) \
922 || ("$(KBUILD_TARGET_ARCH).$(KBUILD_TARGET_ARCH)" == "linux.amd64" && (defined(VBOX_WITH_NATIVE_NEM) || "$(USERNAME)" == "bird")) \
923 || ("$(KBUILD_TARGET_ARCH).$(KBUILD_TARGET_ARCH)" == "win.amd64" && defined(VBOX_WITH_NATIVE_NEM))
924 PROGRAMS += NemRawBench-1
925 NemRawBench-1_TEMPLATE = VBoxR3Static
926 NemRawBench-1_SOURCES = NemRawBench-1.cpp
927 NemRawBench-1_BLD_TYPE = release
928 NemRawBench-1_INCS.win = \
929 $(KBUILD_DEVTOOLS)/win.x86/sdk/v10.0.17134.0/include/10.0.17134.0/um \
930 $(KBUILD_DEVTOOLS)/win.x86/sdk/v10.0.17134.0/include/10.0.17134.0/shared
931 NemRawBench-1_CXXFLAGS.darwin = \
932 -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform//Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks
933 #NemRawBench-1_LDFLAGS.darwin = \
934# -F/System/Library/Frameworks \
935# -framework Hypervisor
936 NemRawBench-1_LDFLAGS.darwin = \
937 /System/Library/Frameworks/Hypervisor.framework/Hypervisor
938 endif
939endif
940
941#
942# PDM Queue tests.
943#
944tstPDMQueue_TEMPLATE := VBoxR3Exe
945tstPDMQueue_DEFS = VBOX_VMM_TARGET_AGNOSTIC $(VMM_COMMON_DEFS)
946tstPDMQueue_SOURCES := tstPDMQueue.cpp
947tstPDMQueue_LIBS := $(LIB_VMM) $(LIB_RUNTIME)
948
949
950ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
951 #
952 # PDM asynchronous completation test.
953 #
954 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
955 tstPDMAsyncCompletionHardened_TEMPLATE = VBoxR3HardenedExe
956 tstPDMAsyncCompletionHardened_NAME = tstPDMAsyncCompletion
957 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
958 tstPDMAsyncCompletionHardened_DEFS = PROGRAM_NAME_STR="tstPDMAsyncCompletion"
959 else
960 tstPDMAsyncCompletionHardened_DEFS = PROGRAM_NAME_STR=\"tstPDMAsyncCompletion\"
961 endif
962 tstPDMAsyncCompletionHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
963 tstPDMAsyncCompletion_TEMPLATE = VBoxR3Dll
964 else
965 tstPDMAsyncCompletion_TEMPLATE = VBoxR3SignedExe
966 endif
967 tstPDMAsyncCompletion_DEFS = VBOX_VMM_TARGET_AGNOSTIC $(VMM_COMMON_DEFS)
968 tstPDMAsyncCompletion_INCS = $(VBOX_PATH_VMM_SRC)/include
969 tstPDMAsyncCompletion_SOURCES = tstPDMAsyncCompletion.cpp
970 tstPDMAsyncCompletion_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
971
972 #
973 # PDM asynchronous completation stress test.
974 #
975 if defined(VBOX_WITH_HARDENING) && "$(KBUILD_TARGET)" == "win"
976 tstPDMAsyncCompletionStressHardened_TEMPLATE = VBoxR3HardenedExe
977 tstPDMAsyncCompletionStressHardened_NAME = tstPDMAsyncCompletionStress
978 ifdef VBOX_WITH_AUTOMATIC_DEFS_QUOTING
979 tstPDMAsyncCompletionStressHardened_DEFS = PROGRAM_NAME_STR="tstPDMAsyncCompletionStress"
980 else
981 tstPDMAsyncCompletionStressHardened_DEFS = PROGRAM_NAME_STR=\"tstPDMAsyncCompletionStress\"
982 endif
983 tstPDMAsyncCompletionStressHardened_SOURCES = ../../HostDrivers/Support/SUPR3HardenedMainTemplate.cpp
984 tstPDMAsyncCompletionStress_TEMPLATE = VBoxR3Dll
985 else
986 tstPDMAsyncCompletionStress_TEMPLATE = VBoxR3SignedExe
987 endif
988 tstPDMAsyncCompletionStress_DEFS = VBOX_VMM_TARGET_AGNOSTIC $(VMM_COMMON_DEFS)
989 tstPDMAsyncCompletionStress_INCS = $(VBOX_PATH_VMM_SRC)/include
990 tstPDMAsyncCompletionStress_SOURCES = tstPDMAsyncCompletionStress.cpp
991 tstPDMAsyncCompletionStress_LIBS = $(LIB_VMM) $(LIB_REM) $(LIB_RUNTIME)
992endif
993
994ifndef VBOX_ONLY_EXTPACKS
995 PROGRAMS += tstSSM-2
996 tstSSM-2_TEMPLATE = VBoxR3TstExe
997 tstSSM-2_DEFS = VBOX_VMM_TARGET_AGNOSTIC IN_VMM_STATIC
998 tstSSM-2_SOURCES = tstSSM-2.cpp
999 tstSSM-2_LIBS = $(PATH_STAGE_LIB)/SSMStandalone$(VBOX_SUFF_LIB)
1000endif
1001
1002
1003#
1004# ARMv8 PGM guest page table walking testcase.
1005#
1006TST_PGMALLGST_ARMV8_FILE = $(tstPGMAllGst-armv8_0_OUTDIR)/tstPGMAllGst-armv8-tests.cpp
1007TST_PGMALLGST_ARMV8_SOURCES := \
1008 tstPGMAllGst_armv8_1=tstPGMAllGst-armv8.json
1009
1010TST_PGMALLGST_ARMV8_PATH_SOURCES := $(PATH_SUB_CURRENT)
1011
1012$$(TST_PGMALLGST_ARMV8_FILE): $(MAKEFILE_CURRENT) \
1013 $(foreach source,$(TST_PGMALLGST_ARMV8_SOURCES),$(TST_PGMALLGST_ARMV8_PATH_SOURCES)/$(lastword $(subst =,$(SP),$(source)))) \
1014 $(VBOX_BIN2C) \
1015 | $$(dir $$@)
1016 $(QUIET)$(RM) -f -- $@
1017 $(QUIET)$(APPEND) -n "$@" \
1018 '' \
1019 '#include "tstPGMAllGst-armv8-tests.h"' \
1020 ''
1021 $(foreach source,$(TST_PGMALLGST_ARMV8_SOURCES), $(NLTAB)$(VBOX_BIN2C) -ascii --append \
1022 "$(firstword $(subst =,$(SP),$(source)))" \
1023 "$(TST_PGMALLGST_ARMV8_PATH_SOURCES)/$(lastword $(subst =,$(SP),$(source)))" \
1024 "$@")
1025
1026OTHER_CLEAN += $(TST_PGMALLGST_ARMV8_FILE)
1027
1028tstPGMAllGst-armv8_TEMPLATE = VBoxR3TstExe
1029tstPGMAllGst-armv8_INCS = \
1030 $(VBOX_PATH_VMM_SRC)/include \
1031 .
1032tstPGMAllGst-armv8_DEFS = IN_VMM_R3 VBOX_VMM_TARGET_ARMV8 $(VMM_COMMON_DEFS)
1033tstPGMAllGst-armv8_SOURCES = \
1034 tstPGMAllGst-armv8.cpp \
1035 $(TST_PGMALLGST_ARMV8_FILE)
1036tstPGMAllGst-armv8_LIBS = $(LIB_RUNTIME)
1037
1038
1039#
1040# Generate VM structure tests.
1041#
1042if !defined(VBOX_ONLY_EXTPACKS) \
1043 && ( defined(VBOX_WITH_DTRACE_R3) \
1044 || defined(VBOX_WITH_DTRACE_R0) \
1045 || defined(VBOX_WITH_DTRACE_RC))
1046 tstVMStructDTrace_TEMPLATE = VBoxR3AutoTest
1047 tstVMStructDTrace_DEFS = VBOX_VMM_TARGET_AGNOSTIC VBOX_IN_VMM IN_VMM_R3 IN_DIS $(VMM_COMMON_DEFS) IEM_WITHOUT_INSTRUCTION_STATS
1048 ifdef VBOX_WITH_RAW_MODE
1049 tstVMStructDTrace_DEFS += VBOX_WITH_RAW_MODE
1050 endif
1051 tstVMStructDTrace_INCS = \
1052 $(VBOX_PATH_VMM_SRC)/include \
1053 $(VBOX_PATH_VMM_SRC)/PATM \
1054 $(VBOX_VMM_TESTCASE_OUT_DIR)
1055 tstVMStructDTrace_SOURCES = tstVMStructDTrace.cpp
1056 ifdef VBOX_WITH_R0_LOGGING
1057 tstVMStructDTrace_DEFS += VBOX_WITH_R0_LOGGING
1058 endif
1059
1060
1061 VMMLibDTraceStructTest_INST = $(VBOX_INST_DTRACE_TST)$(KBUILD_TARGET_ARCH)/
1062 VMMLibDTraceStructTest_SOURCES = \
1063 $(tstVMStructDTrace_0_OUTDIR)/vbox-vm-struct-test.d
1064 VMMLibDTraceStructTest_CLEAN = \
1065 $(tstVMStructDTrace_0_OUTDIR)/vbox-vm-struct-test.d
1066
1067 $$(tstVMStructDTrace_0_OUTDIR)/vbox-vm-struct-test.d: \
1068 $$(tstVMStructDTrace_1_STAGE_TARGET) | $$(dir $$@)
1069 $(QUIET)$(RM) -f $@
1070 $< > $@
1071
1072endif
1073
1074
1075include $(FILE_KBUILD_SUB_FOOTER)
1076
1077
1078#
1079# Some handcrafted support targets for tstAsmStructs.
1080#
1081MY_ASA_ASM_STUFF = \
1082 $(addprefix -D, \
1083 $(DEFS) \
1084 $(DEFS.$(KBUILD_TYPE)) \
1085 $(DEFS.$(KBUILD_TARGET)) \
1086 IN_RING3 $(ARCH_BITS_DEFS) \
1087 $(DEFS.$(KBUILD_TARGET_ARCH)) \
1088 $(DEFS.$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)) \
1089 VBOX_VMM_TARGET_X86 $(VMM_COMMON_DEFS) \
1090 ) \
1091 -f $(if $(eq $(KBUILD_TARGET),darwin),macho,$(if $(eq $(KBUILD_TARGET),win),coff,elf)) \
1092 $(foreach inc,$(INCS) $(VBOX_PATH_VMM_SRC)/testcase $(VBOX_PATH_VMM_SRC)/include $(VBOX_VMM_TESTCASE_OUT_DIR) \
1093 ,-I$(inc)/)
1094
1095# 1a. make a header file which makes all the structures+members globals.
1096$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac: \
1097 $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm.asm \
1098 $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm-lst.sed \
1099 $(DEPTH)/include/iprt/asmdefs.mac \
1100 $(DEPTH)/include/VBox/vmm/cpum.mac \
1101 $(DEPTH)/include/VBox/vmm/vm.mac \
1102 $(DEPTH)/include/VBox/vmm/gvm.mac \
1103 $(DEPTH)/include/VBox/sup.mac \
1104 $(DEPTH)/include/iprt/x86.mac \
1105 $(VBOX_PATH_VMM_SRC)/include/CPUMInternal.mac \
1106 $(VBOX_PATH_VMM_SRC)/include/HMInternal.mac \
1107 $(VBOX_PATH_VMM_SRC)/include/VMMInternal.mac \
1108 $(VBOX_PATH_VMM_SRC)/testcase/Makefile.kmk \
1109 $(PATH_ROOT)/Config.kmk $(LOCALCFG) $(AUTOCFG) \
1110 | $$(dir $$@)
1111 $(call MSG_GENERATE,tstVMStructSize,$@,$<)
1112ifndef DONT_USE_YASM
1113 $(QUIET)$(TOOL_YASM_AS) $(MY_ASA_ASM_STUFF) -o [email protected] -l [email protected] $<
1114 $(SED) -f $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm-lst.sed --output $@ [email protected]
1115else
1116 $(QUIET)$(TOOL_NASM_AS) -g $(MY_ASA_ASM_STUFF) -o [email protected] -l [email protected] $<
1117 $(VBOX_NM) [email protected] | $(SED) \
1118 -e '/[0-9a-fA-F][0-9a-fA-F]* [^a] /d' \
1119 -e 's/[0-9a-fA-F][0-9a-fA-F]* a \([^ ]*\)/global \1/' \
1120 > $@
1121endif
1122
1123# 1b. make an elf/macho object containing the offsets.
1124includedep $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o.dep
1125$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o: \
1126 $(VBOX_PATH_VMM_SRC)/testcase/tstAsmStructsAsm.asm \
1127 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.mac \
1128 $(DEPTH)/include/iprt/asmdefs.mac \
1129 $(DEPTH)/include/VBox/vmm/cpum.mac \
1130 $(DEPTH)/include/VBox/vmm/hm_vmx.mac \
1131 $(DEPTH)/include/VBox/vmm/stam.mac \
1132 $(DEPTH)/include/VBox/vmm/vm.mac \
1133 $(DEPTH)/include/VBox/sup.mac \
1134 $(DEPTH)/include/iprt/x86.mac \
1135 $(VBOX_PATH_VMM_SRC)/include/CPUMInternal.mac \
1136 $(VBOX_PATH_VMM_SRC)/include/HMInternal.mac \
1137 $(VBOX_PATH_VMM_SRC)/include/VMMInternal.mac \
1138 $(VBOX_PATH_VMM_SRC)/testcase/Makefile.kmk \
1139 $$(if $$(eq $$(tstAsmStructsAsmDep_STUFF),$$(MY_ASA_ASM_STUFF)),,FORCE) \
1140 | $$(dir $$@)
1141 $(call MSG_COMPILE,tstAsmStructsasm,$<,$@,AS)
1142ifndef DONT_USE_YASM
1143 $(QUIET)$(TOOL_YASM_AS) $(MY_ASA_ASM_STUFF) -DDO_GLOBALS -o $@ $<
1144else
1145 $(QUIET)$(TOOL_NASM_AS) $(MY_ASA_ASM_STUFF) -DDO_GLOBALS -o $@ $<
1146endif
1147 %$(QUIET2)$(RM) -f -- $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o.dep
1148 %$(QUIET2)$(APPEND) '$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o.dep' 'tstAsmStructsAsmDep_STUFF=$(MY_ASA_ASM_STUFF)'
1149
1150# 2. use nm and sed to transform this into the header we want.
1151$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsHC.h: $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructsAsm.o
1152 $(call MSG_GENERATE,tstVMStructSize,$@,$<)
1153 $(QUIET)$(RM) -f $@ [email protected] [email protected]
1154ifeq ($(KBUILD_TARGET),win)
1155 $(QUIET)$(REDIRECT) -wo [email protected] -- $(TOOL_$(VBOX_VCC_TOOL)_DUMPBIN) /nologo /symbols $<
1156 $(QUIET)$(SED) \
1157 -e '/STAMPROFILEADV/d' \
1158 \
1159 -e '/^[0-9a-fA-F]\{1,\} 00[0-9a-fA-F]* ABS *notype *External *| [^.]\{1,\}\./!d' \
1160 -e 's/^[0-9a-fA-F]\{1,\} \(00[0-9a-fA-F]*\) ABS *notype *External *| \([^.]\{1,\}\)\.\(.*$$\)/ CHECK_OFF(\2, 0x0\1, \3);/' \
1161 --output [email protected] [email protected]
1162 $(QUIET)$(SED) \
1163 -e '/VM_size$$/d' \
1164 -e '/VMCPU_size$$/d' \
1165 -e '/VMMCPU_size$$/d' \
1166 -e '/SUPDRVTRACERUSRCTX32_size$$/d' \
1167 -e '/HMCPU_size$$/d' \
1168 -e '/SUPGLOBALINFOPAGE_size$$/d' \
1169 \
1170 -e '/^[0-9a-fA-F]\{1,\} 00[0-9a-fA-F]* ABS *notype *External *| [^_.]\{1,\}_size$$/!d' \
1171 -e 's/^[0-9a-fA-F]\{1,\} \(00[0-9a-fA-F]*\) ABS *notype *External *| \([^_.]\{1,\}\)_size$$/ CHECK_SIZE(\2, 0x0\1);/' \
1172 --append [email protected] [email protected]
1173else
1174 $(QUIET)$(REDIRECT) -wo [email protected] -- $(VBOX_NM) $<
1175 $(QUIET)$(SED) \
1176 -e '/STAMPROFILEADV/d' \
1177 \
1178 -e '/^\(0x\)\{0,1\}00[0-9a-fA-F]* [aAnN] [^_.]*\./!d' \
1179 -e 's/^\(0x\)\{0,1\}\(00[0-9a-fA-F]*\) [aAnN] \([^.]*\)\.\(.*$$\)/ CHECK_OFF(\3, 0x0\2, \4);/' \
1180 --output [email protected] [email protected]
1181 $(QUIET)$(SED) \
1182 -e '/VM_size$$/d' \
1183 -e '/VMCPU_size$$/d' \
1184 -e '/VMMCPU_size$$/d' \
1185 -e '/SUPDRVTRACERUSRCTX32_size$$/d' \
1186 -e '/HMCPU_size$$/d' \
1187 -e '/SUPGLOBALINFOPAGE_size$$/d' \
1188 \
1189 -e '/^\(0x\)\{0,1\}00[0-9a-fA-F]* [aAnN] [^_.]*_size$$/!d' \
1190 -e 's/^\(0x\)\{0,1\}\(00[0-9a-fA-F]*\) [aAnN] \([^_.]*\)_size/ CHECK_SIZE(\3, 0x0\2);/' \
1191 --append [email protected] [email protected]
1192endif
1193 $(QUIET)$(MV) -f [email protected] $@
1194 $(QUIET)$(RM) -f [email protected]
1195
1196# 3. run it.
1197$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run: \
1198 $$(tstAsmStructs_1_STAGE_TARGET) \
1199 $(if-expr defined(VBOX_WITH_RAW_MODE),$$(tstAsmStructsRC_1_STAGE_TARGET),) \
1200 | $$(dir $$@) $$(VBOX_RUN_TARGET_ORDER_DEPS)
1201 $(QUIET)$(RM) -f $@
1202 $(tstAsmStructs_1_STAGE_TARGET)
1203ifdef VBOX_WITH_RAW_MODE
1204 $(tstAsmStructsRC_1_STAGE_TARGET)
1205endif
1206 $(QUIET)$(APPEND) "$@" "done"
1207
1208
1209
1210#
1211# Run rule for tstVMStructSize.
1212#
1213
1214ifdef VBOX_WITH_RAW_MODE
1215 # 1. Manually dump selected structures and members.
1216 $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructRC.h: $$(tstVMStructRC_1_STAGE_TARGET) | $$(dir $$@)
1217 $(call MSG_GENERATE,tstVMStructSize,$@)
1218 $(QUIET)$(REDIRECT) -wo $@ -- $<
1219endif # VBOX_WITH_RAW_MODE
1220
1221# 2. run it.
1222$(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run: \
1223 $$(tstVMStructSize_1_STAGE_TARGET) \
1224 | $$(dir $$@) $$(VBOX_RUN_TARGET_ORDER_DEPS)
1225 $(QUIET)$(RM) -f $@
1226 $<
1227 $(QUIET)$(APPEND) "$@" "done"
1228
1229# alias for the two struct tests.
1230run-struct-tests: $(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run $(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
1231
Note: See TracBrowser for help on using the repository browser.

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