Build different final files for QEMU, coreboot, and CSM.
Build out/bios.bin on QEMU, out/bios.bin.elf on coreboot, and out/Csm16.bin for CSM. This reduces the chance that one accidentally builds for an incorrect target. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
7c80bb83d9
commit
8744e1512b
21
Makefile
21
Makefile
|
@ -82,7 +82,10 @@ endif
|
|||
# Default targets
|
||||
-include $(KCONFIG_CONFIG)
|
||||
|
||||
target-y = $(OUT)bios.bin
|
||||
target-y :=
|
||||
target-$(CONFIG_QEMU) += $(OUT)bios.bin
|
||||
target-$(CONFIG_CSM) += $(OUT)Csm16.bin
|
||||
target-$(CONFIG_COREBOOT) += $(OUT)bios.bin.elf
|
||||
target-$(CONFIG_BUILD_VGABIOS) += $(OUT)vgabios.bin
|
||||
|
||||
all: $(target-y)
|
||||
|
@ -174,12 +177,24 @@ $(OUT)rom.o: $(OUT)rom16.strip.o $(OUT)rom32seg.strip.o $(OUT)code32flat.o $(OUT
|
|||
@echo " Linking $@"
|
||||
$(Q)$(LD) -T $(OUT)romlayout32flat.lds $(OUT)rom16.strip.o $(OUT)rom32seg.strip.o $(OUT)code32flat.o -o $@
|
||||
|
||||
$(OUT)bios.bin.elf $(OUT)bios.bin: $(OUT)rom.o scripts/checkrom.py
|
||||
$(OUT)bios.bin.prep: $(OUT)rom.o scripts/checkrom.py
|
||||
@echo " Prepping $@"
|
||||
$(Q)rm -f $(OUT)bios.bin $(OUT)Csm16.bin $(OUT)bios.bin.elf
|
||||
$(Q)$(OBJDUMP) -thr $< > $<.objdump
|
||||
$(Q)$(OBJCOPY) -O binary $< $(OUT)bios.bin.raw
|
||||
$(Q)$(PYTHON) ./scripts/checkrom.py $<.objdump $(CONFIG_ROM_SIZE) \
|
||||
$(OUT)bios.bin.raw $(OUT)bios.bin
|
||||
$(OUT)bios.bin.raw $(OUT)bios.bin.prep
|
||||
|
||||
$(OUT)bios.bin: $(OUT)bios.bin.prep
|
||||
@echo " Creating $@"
|
||||
$(Q)cp $< $@
|
||||
|
||||
$(OUT)Csm16.bin: $(OUT)bios.bin.prep
|
||||
@echo " Creating $@"
|
||||
$(Q)cp $< $@
|
||||
|
||||
$(OUT)bios.bin.elf: $(OUT)rom.o $(OUT)bios.bin.prep
|
||||
@echo " Creating $@"
|
||||
$(Q)$(STRIP) -R .comment $< -o $(OUT)bios.bin.elf
|
||||
|
||||
|
||||
|
|
6
README
6
README
|
@ -1,8 +1,10 @@
|
|||
This code implements an X86 legacy bios. It is intended to be
|
||||
compiled using standard gnu tools (eg, gas and gcc).
|
||||
|
||||
To build, one should be able to run "make" in the main directory. The
|
||||
resulting file "out/bios.bin" contains the processed bios image.
|
||||
To build for QEMU, one should be able to run "make" in the main
|
||||
directory. The resulting file "out/bios.bin" contains the processed
|
||||
bios image. To build for coreboot, please see the coreboot wiki. To
|
||||
build for CSM, please see README.CSM.
|
||||
|
||||
|
||||
Testing of images:
|
||||
|
|
11
README.CSM
11
README.CSM
|
@ -9,11 +9,12 @@ Windows 2008r2 is known to use INT 10h BIOS calls even when booted via
|
|||
EFI, and the presence of a CSM makes this work as expected too.
|
||||
|
||||
Having built SeaBIOS with CONFIG_CSM, you should be able to drop the
|
||||
result into your OVMF build tree at OvmfPkg/Csm/Csm16/Csm16.bin and
|
||||
then build OVMF with 'build -D CSM_ENABLE'. The SeaBIOS binary will be
|
||||
included as a discrete file within the 'Flash Volume' which is
|
||||
created, and there are tools which will extract it and allow it to be
|
||||
replaced; satisfying the requirements of the LGPL licence.
|
||||
result (out/Csm16.bin) into your OVMF build tree at
|
||||
OvmfPkg/Csm/Csm16/Csm16.bin and then build OVMF with 'build -D
|
||||
CSM_ENABLE'. The SeaBIOS binary will be included as a discrete file
|
||||
within the 'Flash Volume' which is created, and there are tools which
|
||||
will extract it and allow it to be replaced; satisfying the
|
||||
requirements of the LGPL licence.
|
||||
|
||||
A patch to OVMF is required, to prevent it from marking the region from
|
||||
0xC0000-0xFFFFF as read-only before invoking our Legacy16Boot method. See
|
||||
|
|
Loading…
Reference in New Issue