diff options
author | Michael Brown <mcb30@ipxe.org> | 2014-08-21 16:34:26 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2014-08-22 17:34:07 +0100 |
commit | 705907f9a9f4ba4f8f3bcb806ee18cd457d1dffb (patch) | |
tree | 7b3862b12e923fb1e7451aa278145d6f5a28e6c7 /src/arch/i386/Makefile.pcbios | |
parent | 5b72cf055c6cf749648e8c914b9fc8f21ea69ca9 (diff) | |
download | ipxe-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.pcbios | 10 |
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 |