VirtualBox

source: vbox/trunk/src/VBox/ValidationKit/bootsectors/Makefile.kmk@ 67954

Last change on this file since 67954 was 66446, checked in by vboxsync, 8 years ago

bs3kit: Various fixes related to using the BS3X0TEXT16, BS3X1TEXT16, and BS3RMTEXT16 segments. Ran into problems with switch jump tables lookups being off by 0x10 bytes (or 0x1c, at least it should've been) because the fixups were relative to BS3X0TEXT16 and not the BS3GROUPX0TEXT16 group, meaning that the eye-catcher in BS3X0TEXT16_START offsetted all addressing made by the compiler. Wanted to adjust the framing of the FIXUPP records to be relative to the the group instead of target, but gave up as it would've a couple of days. Not sure if removing the data from BS3X0TEXT16_START is problem free either, but for not it seems to work for bs3-cpu-generated-1.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 12.8 KB
Line 
1# $Id: Makefile.kmk 66446 2017-04-05 18:00:17Z vboxsync $
2## @file
3# VirtualBox Validation Kit - Bootsector Tests for Test Drivers or standalone testing.
4#
5
6#
7# Copyright (C) 2006-2016 Oracle Corporation
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17# The contents of this file may alternatively be used under the terms
18# of the Common Development and Distribution License Version 1.0
19# (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20# VirtualBox OSE distribution, in which case the provisions of the
21# CDDL are applicable instead of those of the GPL.
22#
23# You may elect to license modified versions of this file under the
24# terms and conditions of either the GPL or the CDDL or both.
25#
26
27SUB_DEPTH = ../../../..
28include $(KBUILD_PATH)/subheader.kmk
29
30
31#
32# Make sure our Config.kmk gets included when kmk is running from a parent directory.
33#
34ifndef VBOX_BOOTSECTORS_CONFIG_KMK_INCLUDED
35 include $(PATH_SUB_CURRENT)/Config.kmk
36endif
37
38
39#
40# Include sub-makefile.
41#
42# The VBOX_WITH_BS3KIT feature requires NASM 2.12 and either MSVC or gcc
43# with ms_abi function attribute (gcc v4.4+, MSVC default).
44# Some 32-bit gcc compilers come without 64-bit support (e.g. EL5).
45#
46if defined(VBOX_WITH_OPEN_WATCOM)
47 if1of ($(KBUILD_TARGET), win)
48 VBOX_WITH_BS3KIT = 1
49 else if $(VBOX_GCC_VERSION_CC) >= 40400 # ms_abi was added in 4.4
50 if1of ($(KBUILD_TARGET), linux)
51 ifneq ($(VBOX_GCC_m64),)
52 VBOX_WITH_BS3KIT = 1
53 endif
54 endif
55 endif
56 ifdef VBOX_WITH_BS3KIT
57 include $(PATH_SUB_CURRENT)/bs3kit/Makefile.kmk
58 endif
59endif
60
61
62#
63# Boot Sector "Linker" tool.
64#
65TOOL_VBoxBootSectorLd = Joins one or more BS2 object files into a floppy img.
66TOOL_VBoxBootSectorLd_LINK_MISCBIN_OUTPUT =
67TOOL_VBoxBootSectorLd_LINK_MISCBIN_DEPEND =
68TOOL_VBoxBootSectorLd_LINK_MISCBIN_DEPORD = $(VBoxBs2Linker_1_TARGET)
69define TOOL_VBoxBootSectorLd_LINK_MISCBIN_CMDS
70 $(VBoxBs2Linker_1_TARGET) -o $(out) $(objs) $(othersrc)
71endef
72
73BLDPROGS += VBoxBs2Linker
74VBoxBs2Linker_TEMPLATE = VBoxBldProg
75VBoxBs2Linker_SOURCES = VBoxBs2Linker.cpp
76
77
78#
79# Makes a boot sector test image.
80#
81TEMPLATE_VBoxBsTestImg = kBuild tool config for building boot sector stuff.
82TEMPLATE_VBoxBsTestImg_INST = $(INST_VALIDATIONKIT)bootsectors/
83TEMPLATE_VBoxBsTestImg_BINSUFF = .img
84TEMPLATE_VBoxBsTestImg_MODE = 0644
85TEMPLATE_VBoxBsTestImg_ASTOOL = YASM
86TEMPLATE_VBoxBsTestImg_ASFLAGS = -f bin -P $(VBOX_PATH_BOOTSECTORS_SRC)/bootsector2-first.mac $(VBOX_YASM_Wno-segreg-in-64bit) --mapfile
87TEMPLATE_VBoxBsTestImg_ASDEFS = ASM_FORMAT_BIN
88TEMPLATE_VBoxBsTestImg_INCS = \
89 . \
90 ../../VMM/testcase/Instructions
91TEMPLATE_VBoxBsTestImg_LDTOOL = VBoxBootSectorLd
92
93
94#
95# The boot sector tests.
96#
97MISCBINS += bootsector-shutdown
98bootsector-shutdown_TEMPLATE = VBoxBsTestImg
99bootsector-shutdown_SOURCES = bootsector-shutdown.asm
100
101MISCBINS += bootsector-pae
102bootsector-pae_TEMPLATE = VBoxBsTestImg
103bootsector-pae_SOURCES = bootsector-pae.asm
104
105MISCBINS += bootsector-empty
106bootsector-empty_TEMPLATE = VBoxBsTestImg
107bootsector-empty_SOURCES = bootsector-empty.asm
108
109MISCBINS += bootsector2-test1
110bootsector2-test1_TEMPLATE = VBoxBsTestImg
111bootsector2-test1_SOURCES = bootsector2-test1.asm
112
113MISCBINS += bootsector2-cpu-hidden-regs-1
114bootsector2-cpu-hidden-regs-1_TEMPLATE = VBoxBsTestImg
115bootsector2-cpu-hidden-regs-1_SOURCES = bootsector2-cpu-hidden-regs-1.asm
116
117MISCBINS += bootsector2-cpu-instr-1
118bootsector2-cpu-instr-1_TEMPLATE = VBoxBsTestImg
119bootsector2-cpu-instr-1_SOURCES = bootsector2-cpu-instr-1.asm
120
121MISCBINS += bootsector2-cpu-pf-1
122bootsector2-cpu-pf-1_TEMPLATE = VBoxBsTestImg
123bootsector2-cpu-pf-1_SOURCES = bootsector2-cpu-pf-1.asm
124
125MISCBINS += bootsector2-cpu-xcpt-1
126bootsector2-cpu-xcpt-1_TEMPLATE = VBoxBsTestImg
127bootsector2-cpu-xcpt-1_SOURCES = bootsector2-cpu-xcpt-1.asm
128
129MISCBINS += bootsector2-cpu-xcpt-2
130bootsector2-cpu-xcpt-2_TEMPLATE = VBoxBsTestImg
131bootsector2-cpu-xcpt-2_SOURCES = bootsector2-cpu-xcpt-2.asm
132
133MISCBINS += bootsector2-cpu-a20-1
134bootsector2-cpu-a20-1_TEMPLATE = VBoxBsTestImg
135bootsector2-cpu-a20-1_SOURCES = bootsector2-cpu-a20-1.asm
136
137MISCBINS += bootsector2-cpu-basic-1
138bootsector2-cpu-basic-1_TEMPLATE = VBoxBsTestImg
139bootsector2-cpu-basic-1_SOURCES = bootsector2-cpu-basic-1.asm
140
141MISCBINS += bootsector2-cpu-ac-loop
142bootsector2-cpu-ac-loop_TEMPLATE = VBoxBsTestImg
143bootsector2-cpu-ac-loop_SOURCES = bootsector2-cpu-ac-loop.asm
144
145MISCBINS += bootsector2-cpu-db-loop
146bootsector2-cpu-db-loop_TEMPLATE = VBoxBsTestImg
147bootsector2-cpu-db-loop_SOURCES = bootsector2-cpu-db-loop.asm
148
149MISCBINS += bootsector2-boot-registers-1
150bootsector2-boot-registers-1_TEMPLATE = VBoxBsTestImg
151bootsector2-boot-registers-1_SOURCES = bootsector2-boot-registers-1.asm
152
153MISCBINS += bootsector2-triple-fault-1
154bootsector2-triple-fault-1_TEMPLATE = VBoxBsTestImg
155bootsector2-triple-fault-1_SOURCES = bootsector2-triple-fault-1.asm
156
157
158ifeq ($(USERNAME),birdxx)
159 if1of ($(KBUILD_HOST).$(KBUILD_HOST_ARCH),win.amd64)
160#
161# Generated instruction tests (work in progress).
162#
163
164VBOX_PATH_VBINSTST = $(PATH_ROOT)/src/VBox/VMM/testcase/Instructions
165VBOX_VBINSTST_GEN = $(VBOX_PATH_VBINSTST)/InstructionTestGen.py
166VBOX_BOOTSECTOR2_VBINSTST_AMD64_GEN = $(VBOX_BLD_PYTHON) $(VBOX_VBINSTST_GEN) \
167 --split 3 --target bs2-r0-64 --output-base $(bootsectors_0_OUTDIR)/VBInsTst-64 --test-size tiny
168VBOX_BOOTSECTOR2_VBINSTST_AMD64_FILES = $(shell $(VBOX_BOOTSECTOR2_VBINSTST_AMD64_GEN) --makefile-mode)
169
170#$$(bootsectors_0_OUTDIR)/VBInsTst.ts + $$(VBOX_BOOTSECTOR2_VBINSTST_AMD64_FILES): $(VBOX_VBINSTST_GEN) | $$(dir $$@)
171# $(VBOX_BOOTSECTOR2_VBINSTST_AMD64_GEN)
172# $(APPEND) -t $@
173#
174#bootsectors_SOURCES += $(bootsectors_0_OUTDIR)/bootsector2-vbinstst-1.img
175#bootsectors_CLEAN += $(VBOX_BOOTSECTOR2_VBINSTST_AMD64_FILES)
176#
177#$$(bootsectors_0_OUTDIR)/bootsector2-vbinstst-1.img: \
178# $(PATH_SUB_CURRENT)/bootsector2-vbinstst-64-1.asm \
179# $$(bootsectors_0_OUTDIR)/VBInsTst-64.asm
180# $(TOOL_$(VBOX_ASTOOL)_AS) -f bin -D ASM_FORMAT_BIN -I $(dir $@) -I $(PATH_ROOT)/include -I $(VBOX_PATH_VBINSTST) -o $@ -L nasm -l $@.lst $<
181
182MISCBINS += bootsector2-vbinstst-kernel
183bootsector2-vbinstst-kernel_TEMPLATE = VBoxBsTestImg
184bootsector2-vbinstst-kernel_SOURCES = \
185 bootsector2-vbinstst-kernel.asm
186
187
188MISCBINS += bootsector2-vbinstst-64-1
189bootsector2-vbinstst-64-1_TEMPLATE = VBoxBsTestImg
190bootsector2-vbinstst-64-1_DEFS = \
191 BS2_BIG_IMAGE_LM64 \
192 BS2_BIG_IMAGE_GEN_SOURCE_FILE=bs2-vbinstst-64-1.asm \
193 BS2_BIG_IMAGE_GEN_TEST_NAME=\"bs2-vbinstst-64-1\"
194bootsector2-vbinstst-64-1_INCS = $(bootsector2-vbinstst-64-1_0_OUTDIR)/
195bootsector2-vbinstst-64-1_SOURCES = \
196 bootsector2-vbinstst-kernel.asm \
197 bootsector2-vbinstst-big-template.asm
198bootsector2-vbinstst-64-1_INTERMEDIATES = \
199 $(bootsector2-vbinstst-64-1_0_OUTDIR)/bs2-vbinstst-64-1.asm
200bootsector2-vbinstst-64-1_CLEAN = \
201 $(bootsector2-vbinstst-64-1_0_OUTDIR)/bs2-vbinstst-64-1.asm
202
203$$(bootsector2-vbinstst-64-1_0_OUTDIR)/bs2-vbinstst-64-1.asm: $(VBOX_VBINSTST_GEN) | $$(dir $$@)
204 $(VBOX_BLD_PYTHON) $(VBOX_VBINSTST_GEN) --target bs2-r0-64-big --output-base $(basename $@) --test-size medium
205
206MISCBINS += bootsector2-vbinstst-32-1
207bootsector2-vbinstst-32-1_TEMPLATE = VBoxBsTestImg
208bootsector2-vbinstst-32-1_DEFS = \
209 BS2_BIG_IMAGE_PP32 \
210 BS2_BIG_IMAGE_GEN_SOURCE_FILE=bs2-vbinstst-32-1.asm \
211 BS2_BIG_IMAGE_GEN_TEST_NAME=\"bs2-vbinstst-32-1\"
212bootsector2-vbinstst-32-1_INCS = $(bootsector2-vbinstst-32-1_0_OUTDIR)/
213bootsector2-vbinstst-32-1_SOURCES = \
214 bootsector2-vbinstst-kernel.asm \
215 bootsector2-vbinstst-big-template.asm
216bootsector2-vbinstst-32-1_INTERMEDIATES = \
217 $(bootsector2-vbinstst-32-1_0_OUTDIR)/bs2-vbinstst-32-1.asm
218bootsector2-vbinstst-32-1_CLEAN = \
219 $(bootsector2-vbinstst-32-1_0_OUTDIR)/bs2-vbinstst-32-1.asm
220
221$$(bootsector2-vbinstst-32-1_0_OUTDIR)/bs2-vbinstst-32-1.asm: $(VBOX_VBINSTST_GEN) | $$(dir $$@)
222 $(VBOX_BLD_PYTHON) $(VBOX_VBINSTST_GEN) --target bs2-r0-32-big --output-base $(basename $@) --test-size medium
223
224 endif
225endif # bird-only
226
227
228ifdef VBOX_WITH_BS3KIT
229#
230# Bs3kit
231#
232
233# CPU basics #2 (first being bootsector2-cpu-basic-1).
234MISCBINS += bs3-cpu-basic-2
235bs3-cpu-basic-2_TEMPLATE = VBoxBS3KitImg
236bs3-cpu-basic-2_INCS = .
237bs3-cpu-basic-2_DEFS = BS3_CMN_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c
238bs3-cpu-basic-2_DEFS += BS3_MODE_INSTANTIATE_FILE1=bs3-cpu-basic-2-template.c
239 ifeq ($(KBUILD_HOST),win)
240bs3-cpu-basic-2_DEFS += HAVE_OMF_CONVERTER
241 endif
242bs3-cpu-basic-2_SOURCES = \
243 bs3kit/bs3-first-rm.asm \
244 bs3-cpu-basic-2.c \
245 bs3-cpu-basic-2-x0.c \
246 bs3-cpu-basic-2-32.c32 \
247 bs3-cpu-basic-2-pf.c32 \
248 bs3-cpu-basic-2-asm.asm \
249 bs3kit/bs3-cmn-instantiate-x0.c16 \
250 bs3kit/bs3-cmn-instantiate.c32 \
251 bs3kit/bs3-cmn-instantiate.c64
252bs3-cpu-basic-2-template.o:: \
253 $$(bs3-cpu-basic-2_0_OUTDIR)/bs3kit/bs3-cmn-instantiate-x0.o16 \
254 $$(bs3-cpu-basic-2_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o32 \
255 $$(bs3-cpu-basic-2_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o64 \
256 $$(bs3-cpu-basic-2_0_OUTDIR)/bs3-cpu-basic-2-asm.o16
257
258# FPU state corruption checker.
259MISCBINS += bs3-fpustate-1
260bs3-fpustate-1_TEMPLATE = VBoxBS3KitImg
261bs3-fpustate-1_INCS = .
262bs3-fpustate-1_DEFS = BS3_CMN_INSTANTIATE_FILE1=bs3-fpustate-1-template.c
263bs3-fpustate-1_DEFS += BS3_MODE_INSTANTIATE_FILE1=bs3-fpustate-1-template.c
264bs3-fpustate-1_SOURCES = \
265 bs3kit/bs3-first-rm.asm \
266 bs3-fpustate-1.c \
267 bs3kit/bs3-cmn-instantiate.c16 \
268 bs3kit/bs3-cmn-instantiate.c32 \
269 bs3kit/bs3-cmn-instantiate.c64 \
270 bs3-fpustate-1-asm.asm
271bs3-fpustate-1-template.o:: \
272 $$(bs3-fpustate-1_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o16 \
273 $$(bs3-fpustate-1_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o32 \
274 $$(bs3-fpustate-1_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o64 \
275 $$(bs3-fpustate-1_0_OUTDIR)/bs3-fpustate-1-asm.o16
276
277# CPU instruction decoding experiments.
278MISCBINS += bs3-cpu-decoding-1
279bs3-cpu-decoding-1_TEMPLATE = VBoxBS3KitImg
280bs3-cpu-decoding-1_INCS = .
281bs3-cpu-decoding-1_DEFS = BS3_CMN_INSTANTIATE_FILE1=bs3-cpu-decoding-1-template.c
282bs3-cpu-decoding-1_DEFS += BS3_MODE_INSTANTIATE_FILE1=bs3-cpu-decoding-1-template.c
283bs3-cpu-decoding-1_SOURCES = \
284 bs3kit/bs3-first-init-all-pp32.asm \
285 bs3-cpu-decoding-1.c32 \
286 bs3-cpu-decoding-1-asm.asm
287# bs3kit/bs3-cmn-instantiate.c16 \
288# bs3kit/bs3-cmn-instantiate.c32 \
289# bs3kit/bs3-cmn-instantiate.c64
290bs3-cpu-decoding-1-template.o:: \
291 $$(bs3-cpu-decoding-1_0_OUTDIR)/bs3-cpu-decoding-1-asm.o16
292# $$(bs3-cpu-decoding-1_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o16 \
293# $$(bs3-cpu-decoding-1_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o32 \
294# $$(bs3-cpu-decoding-1_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o64 \
295
296
297# CPU instructions #2 (first being bootsector2-cpu-instr-1).
298MISCBINS += bs3-cpu-instr-2
299bs3-cpu-instr-2_TEMPLATE = VBoxBS3KitImg
300bs3-cpu-instr-2_INCS = .
301bs3-cpu-instr-2_DEFS = BS3_CMN_INSTANTIATE_FILE1=bs3-cpu-instr-2-template.c
302bs3-cpu-instr-2_DEFS += BS3_MODE_INSTANTIATE_FILE1=bs3-cpu-instr-2-template.c
303bs3-cpu-instr-2_SOURCES = \
304 bs3kit/bs3-first-rm.asm \
305 bs3-cpu-instr-2.c \
306 bs3-cpu-instr-2-asm.asm \
307 bs3kit/bs3-cmn-instantiate-x0.c16 \
308 bs3kit/bs3-cmn-instantiate.c32 \
309 bs3kit/bs3-cmn-instantiate.c64
310bs3-cpu-instr-2-template.o:: \
311 $$(bs3-cpu-instr-2_0_OUTDIR)/bs3kit/bs3-cmn-instantiate-x0.o16 \
312 $$(bs3-cpu-instr-2_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o32 \
313 $$(bs3-cpu-instr-2_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o64 \
314 $$(bs3-cpu-instr-2_0_OUTDIR)/bs3-cpu-instr-2-asm.o16
315
316# CPU generated instruction tests #1
317MISCBINS += bs3-cpu-generated-1
318bs3-cpu-generated-1_TEMPLATE = VBoxBS3KitImg
319bs3-cpu-generated-1_INCS = .
320bs3-cpu-generated-1_DEFS = BS3_CMN_INSTANTIATE_FILE1=bs3-cpu-generated-1-template.c
321bs3-cpu-generated-1_SOURCES = \
322 bs3kit/bs3-first-rm.asm \
323 bs3-cpu-generated-1.c \
324 bs3-cpu-generated-1-asm.asm \
325 bs3kit/bs3-cmn-instantiate-x0.c16 \
326 bs3kit/bs3-cmn-instantiate.c32 \
327 bs3kit/bs3-cmn-instantiate.c64 \
328 $(bs3-cpu-generated-1_0_OUTDIR)/bs3-cpu-generated-1-data.c16
329bs3-cpu-generated-1_CLEAN = $(bs3-cpu-generated-1_0_OUTDIR)/bs3-cpu-generated-1-data.c16
330
331bs3-cpu-generated-1-template.o:: \
332 $$(bs3-cpu-generated-1_0_OUTDIR)/bs3kit/bs3-cmn-instantiate-x0.o16 \
333 $$(bs3-cpu-generated-1_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o32 \
334 $$(bs3-cpu-generated-1_0_OUTDIR)/bs3kit/bs3-cmn-instantiate.o64 \
335 $$(bs3-cpu-generated-1_0_OUTDIR)/bs3-cpu-generated-1-asm.o16
336
337$$(bs3-cpu-generated-1_0_OUTDIR)/bs3-cpu-generated-1-data.c16: \
338 $(PATH_SUB_CURRENT)/bs3-cpu-generated-1-data.py \
339 $(PATH_SUB_CURRENT)/../../VMM/VMMAll/IEMAllInstructionsPython.py \
340 $(PATH_SUB_CURRENT)/../../VMM/VMMAll/IEMAllInstructions*.cpp.h \
341 | $$(dir $$@)
342 $(VBOX_BLD_PYTHON) $< $@
343
344endif # VBOX_WITH_BS3KIT
345
346
347#
348# pylint
349#
350VBOX_VALIDATIONKIT_PYTHON_SOURCES += $(wildcard $(PATH_SUB_CURRENT)/*.py)
351$(evalcall def_vbox_validationkit_process_python_sources)
352
353include $(FILE_KBUILD_SUB_FOOTER)
354
Note: See TracBrowser for help on using the repository browser.

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