aboutsummaryrefslogtreecommitdiff
path: root/src/arch/i386/Makefile.pcbios
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2014-08-21 16:34:26 +0100
committerMichael Brown <mcb30@ipxe.org>2014-08-22 17:34:07 +0100
commit705907f9a9f4ba4f8f3bcb806ee18cd457d1dffb (patch)
tree7b3862b12e923fb1e7451aa278145d6f5a28e6c7 /src/arch/i386/Makefile.pcbios
parent5b72cf055c6cf749648e8c914b9fc8f21ea69ca9 (diff)
downloadipxe-705907f9a9f4ba4f8f3bcb806ee18cd457d1dffb.zip
ipxe-705907f9a9f4ba4f8f3bcb806ee18cd457d1dffb.tar.gz
ipxe-705907f9a9f4ba4f8f3bcb806ee18cd457d1dffb.tar.bz2
[build] Allow ISA ROMs to be built
The build process has for a long time assumed that every ROM is a PCI ROM, and will always include the PCI header and PCI-related functionality (such as checking the PCI BIOS version, including the PCI bus:dev.fn address within the ROM product name string, etc.). While real ISA cards are no longer in use, some virtualisation environments (notably VirtualBox) have support only for ISA ROMs. This can cause problems: in particular, VirtualBox will call our initialisation entry point with random garbage in %ax, which we then treat as the PCI bus:dev.fn address of the autoboot device: this generally prevents the default boot sequence from using any network devices. Create .isarom and .pcirom prefixes which can be used to explicitly specify the type of ROM to be created. (Note that the .mrom prefix always implies a PCI ROM, since the .mrom mechanism relies on reconfiguring PCI BARs.) Make .rom a magic prefix which will automatically select the appropriate PCI or ISA ROM prefix for ROMs defined via a PCI_ROM() or ISA_ROM() macro. To maintain backwards compatibility, we default to building a PCI ROM for anything which is not directly derived from a PCI_ROM() or ISA_ROM() macro (e.g. bin/intel.rom). Add a selection of targets to "make everything" to ensure that the (relatively obscure) ISA ROM build process is included within the per-commit QA checks. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/i386/Makefile.pcbios')
-rw-r--r--src/arch/i386/Makefile.pcbios10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/arch/i386/Makefile.pcbios b/src/arch/i386/Makefile.pcbios
index 50e9314..ff82373 100644
--- a/src/arch/i386/Makefile.pcbios
+++ b/src/arch/i386/Makefile.pcbios
@@ -16,6 +16,8 @@ SRCDIRS += arch/i386/drivers/net
#
MEDIA += rom
MEDIA += mrom
+MEDIA += pcirom
+MEDIA += isarom
MEDIA += pxe
MEDIA += kpxe
MEDIA += kkpxe
@@ -31,6 +33,8 @@ MEDIA += exe
#
PAD_rom = $(PERL) $(PADIMG) --blksize=512 --byte=0xff
PAD_mrom = $(PAD_rom)
+PAD_pcirom = $(PAD_rom)
+PAD_isarom = $(PAD_rom)
PAD_dsk = $(PERL) $(PADIMG) --blksize=512
PAD_hd = $(PERL) $(PADIMG) --blksize=32768
PAD_exe = $(PERL) $(PADIMG) --blksize=512
@@ -39,11 +43,15 @@ PAD_exe = $(PERL) $(PADIMG) --blksize=512
#
FINALISE_rom = $(PERL) $(FIXROM)
FINALISE_mrom = $(FINALISE_rom)
+FINALISE_pcirom = $(FINALISE_rom)
+FINALISE_isarom = $(FINALISE_rom)
-# Use $(ROMS) rather than $(DRIVERS) for "allroms" and "allmroms"
+# Use $(ROMS) rather than $(DRIVERS) for "allroms", "allmroms", etc.
#
LIST_NAME_rom := ROMS
LIST_NAME_mrom := ROMS
+LIST_NAME_pcirom := ROMS
+LIST_NAME_isarom := ROMS
# rule to make a non-emulation ISO boot image
NON_AUTO_MEDIA += iso