aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2016-02-16 15:19:01 +0000
committerMichael Brown <mcb30@ipxe.org>2016-02-16 19:32:32 +0000
commitf468f12b1eca15e703aa2a79f1c82969c04c2322 (patch)
treef1868e6cb7debaeb7aca59e4488b603fcc6481d7
parent43515f9f1a3e3bfaa9171f4711ed0aafef1caf06 (diff)
downloadipxe-f468f12b1eca15e703aa2a79f1c82969c04c2322.tar.gz
[bios] Add bin-x86_64-pcbios build platform
Move most arch/i386 files to arch/x86, and adjust the contents of the Makefiles and the include/bits/*.h headers to reflect the new locations. This patch makes no substantive code changes, as can be seen using a rename-aware diff (e.g. "git show -M5"). This patch does not make the pcbios platform functional for x86_64; it merely allows it to compile without errors. Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/arch/i386/Makefile13
-rw-r--r--src/arch/i386/Makefile.pcbios123
-rw-r--r--src/arch/x86/Makefile9
-rw-r--r--src/arch/x86/Makefile.pcbios123
-rw-r--r--src/arch/x86/core/basemem_packet.c (renamed from src/arch/i386/core/basemem_packet.c)0
-rw-r--r--src/arch/x86/core/cachedhcp.c (renamed from src/arch/i386/core/cachedhcp.c)0
-rw-r--r--src/arch/x86/core/dumpregs.c (renamed from src/arch/i386/core/dumpregs.c)0
-rw-r--r--src/arch/x86/core/patch_cf.S (renamed from src/arch/i386/core/patch_cf.S)0
-rw-r--r--src/arch/x86/core/pci_autoboot.c (renamed from src/arch/i386/core/pci_autoboot.c)0
-rw-r--r--src/arch/x86/core/rdtsc_timer.c (renamed from src/arch/i386/core/rdtsc_timer.c)0
-rw-r--r--src/arch/x86/core/relocate.c (renamed from src/arch/i386/core/relocate.c)0
-rw-r--r--src/arch/x86/core/runtime.c (renamed from src/arch/i386/core/runtime.c)0
-rw-r--r--src/arch/x86/core/stack.S (renamed from src/arch/i386/core/stack.S)0
-rw-r--r--src/arch/x86/core/stack16.S (renamed from src/arch/i386/core/stack16.S)0
-rw-r--r--src/arch/x86/core/video_subr.c (renamed from src/arch/i386/core/video_subr.c)0
-rw-r--r--src/arch/x86/core/virtaddr.S (renamed from src/arch/i386/core/virtaddr.S)0
-rw-r--r--src/arch/x86/drivers/net/undi.c (renamed from src/arch/i386/drivers/net/undi.c)0
-rw-r--r--src/arch/x86/drivers/net/undiisr.S (renamed from src/arch/i386/drivers/net/undiisr.S)0
-rw-r--r--src/arch/x86/drivers/net/undiload.c (renamed from src/arch/i386/drivers/net/undiload.c)0
-rw-r--r--src/arch/x86/drivers/net/undinet.c (renamed from src/arch/i386/drivers/net/undinet.c)0
-rw-r--r--src/arch/x86/drivers/net/undionly.c (renamed from src/arch/i386/drivers/net/undionly.c)0
-rw-r--r--src/arch/x86/drivers/net/undipreload.c (renamed from src/arch/i386/drivers/net/undipreload.c)0
-rw-r--r--src/arch/x86/drivers/net/undirom.c (renamed from src/arch/i386/drivers/net/undirom.c)0
-rw-r--r--src/arch/x86/hci/commands/pxe_cmd.c (renamed from src/arch/i386/hci/commands/pxe_cmd.c)0
-rw-r--r--src/arch/x86/image/bootsector.c (renamed from src/arch/i386/image/bootsector.c)0
-rw-r--r--src/arch/x86/image/bzimage.c (renamed from src/arch/i386/image/bzimage.c)0
-rw-r--r--src/arch/x86/image/elfboot.c (renamed from src/arch/i386/image/elfboot.c)0
-rw-r--r--src/arch/x86/image/initrd.c (renamed from src/arch/i386/image/initrd.c)0
-rw-r--r--src/arch/x86/image/multiboot.c (renamed from src/arch/i386/image/multiboot.c)0
-rw-r--r--src/arch/x86/image/nbi.c (renamed from src/arch/i386/image/nbi.c)0
-rw-r--r--src/arch/x86/image/pxe_image.c (renamed from src/arch/i386/image/pxe_image.c)0
-rw-r--r--src/arch/x86/image/sdi.c (renamed from src/arch/i386/image/sdi.c)0
-rw-r--r--src/arch/x86/include/basemem.h (renamed from src/arch/i386/include/basemem.h)0
-rw-r--r--src/arch/x86/include/basemem_packet.h (renamed from src/arch/i386/include/basemem_packet.h)0
-rw-r--r--src/arch/x86/include/bios.h (renamed from src/arch/i386/include/bios.h)0
-rw-r--r--src/arch/x86/include/bios_disks.h (renamed from src/arch/i386/include/bios_disks.h)0
-rw-r--r--src/arch/x86/include/biosint.h (renamed from src/arch/i386/include/biosint.h)0
-rw-r--r--src/arch/x86/include/bits/entropy.h (renamed from src/arch/i386/include/bits/entropy.h)2
-rw-r--r--src/arch/x86/include/bits/nap.h (renamed from src/arch/i386/include/bits/nap.h)2
-rw-r--r--src/arch/x86/include/bits/reboot.h (renamed from src/arch/i386/include/bits/reboot.h)2
-rw-r--r--src/arch/x86/include/bits/sanboot.h (renamed from src/arch/i386/include/bits/sanboot.h)2
-rw-r--r--src/arch/x86/include/bits/smbios.h (renamed from src/arch/i386/include/bits/smbios.h)2
-rw-r--r--src/arch/x86/include/bits/time.h (renamed from src/arch/i386/include/bits/time.h)2
-rw-r--r--src/arch/x86/include/bits/timer.h (renamed from src/arch/i386/include/bits/timer.h)2
-rw-r--r--src/arch/x86/include/bits/uaccess.h (renamed from src/arch/i386/include/bits/uaccess.h)2
-rw-r--r--src/arch/x86/include/bits/umalloc.h (renamed from src/arch/i386/include/bits/umalloc.h)2
-rw-r--r--src/arch/x86/include/bochs.h (renamed from src/arch/i386/include/bochs.h)0
-rw-r--r--src/arch/x86/include/bootsector.h (renamed from src/arch/i386/include/bootsector.h)0
-rw-r--r--src/arch/x86/include/bzimage.h (renamed from src/arch/i386/include/bzimage.h)0
-rw-r--r--src/arch/x86/include/fakee820.h (renamed from src/arch/i386/include/fakee820.h)0
-rw-r--r--src/arch/x86/include/initrd.h (renamed from src/arch/i386/include/initrd.h)0
-rw-r--r--src/arch/x86/include/int13.h (renamed from src/arch/i386/include/int13.h)0
-rw-r--r--src/arch/x86/include/ipxe/bios_nap.h (renamed from src/arch/i386/include/ipxe/bios_nap.h)0
-rw-r--r--src/arch/x86/include/ipxe/bios_reboot.h (renamed from src/arch/i386/include/ipxe/bios_reboot.h)0
-rw-r--r--src/arch/x86/include/ipxe/bios_sanboot.h (renamed from src/arch/i386/include/ipxe/bios_sanboot.h)0
-rw-r--r--src/arch/x86/include/ipxe/bios_smbios.h (renamed from src/arch/i386/include/ipxe/bios_smbios.h)0
-rw-r--r--src/arch/x86/include/ipxe/bios_timer.h (renamed from src/arch/i386/include/ipxe/bios_timer.h)0
-rw-r--r--src/arch/x86/include/ipxe/errno/pcbios.h (renamed from src/arch/i386/include/ipxe/errno/pcbios.h)0
-rw-r--r--src/arch/x86/include/ipxe/memtop_umalloc.h (renamed from src/arch/i386/include/ipxe/memtop_umalloc.h)0
-rw-r--r--src/arch/x86/include/ipxe/rdtsc_timer.h (renamed from src/arch/i386/include/ipxe/rdtsc_timer.h)0
-rw-r--r--src/arch/x86/include/ipxe/rtc_entropy.h (renamed from src/arch/i386/include/ipxe/rtc_entropy.h)0
-rw-r--r--src/arch/x86/include/ipxe/rtc_time.h (renamed from src/arch/i386/include/ipxe/rtc_time.h)0
-rw-r--r--src/arch/x86/include/ipxe/vesafb.h (renamed from src/arch/i386/include/ipxe/vesafb.h)0
-rw-r--r--src/arch/x86/include/kir.h (renamed from src/arch/i386/include/kir.h)0
-rw-r--r--src/arch/x86/include/libkir.h (renamed from src/arch/i386/include/libkir.h)0
-rw-r--r--src/arch/x86/include/librm.h (renamed from src/arch/i386/include/librm.h)0
-rw-r--r--src/arch/x86/include/memsizes.h (renamed from src/arch/i386/include/memsizes.h)0
-rw-r--r--src/arch/x86/include/multiboot.h (renamed from src/arch/i386/include/multiboot.h)0
-rw-r--r--src/arch/x86/include/pnpbios.h (renamed from src/arch/i386/include/pnpbios.h)0
-rw-r--r--src/arch/x86/include/pxe.h (renamed from src/arch/i386/include/pxe.h)0
-rw-r--r--src/arch/x86/include/pxe_api.h (renamed from src/arch/i386/include/pxe_api.h)0
-rw-r--r--src/arch/x86/include/pxe_call.h (renamed from src/arch/i386/include/pxe_call.h)0
-rw-r--r--src/arch/x86/include/pxe_error.h (renamed from src/arch/i386/include/pxe_error.h)0
-rw-r--r--src/arch/x86/include/pxe_types.h (renamed from src/arch/i386/include/pxe_types.h)0
-rw-r--r--src/arch/x86/include/pxeparent.h (renamed from src/arch/i386/include/pxeparent.h)0
-rw-r--r--src/arch/x86/include/realmode.h (renamed from src/arch/i386/include/realmode.h)0
-rw-r--r--src/arch/x86/include/registers.h (renamed from src/arch/i386/include/registers.h)0
-rw-r--r--src/arch/x86/include/rmsetjmp.h (renamed from src/arch/i386/include/rmsetjmp.h)0
-rw-r--r--src/arch/x86/include/rtc.h (renamed from src/arch/i386/include/rtc.h)0
-rw-r--r--src/arch/x86/include/sdi.h (renamed from src/arch/i386/include/sdi.h)0
-rw-r--r--src/arch/x86/include/undi.h (renamed from src/arch/i386/include/undi.h)0
-rw-r--r--src/arch/x86/include/undiload.h (renamed from src/arch/i386/include/undiload.h)0
-rw-r--r--src/arch/x86/include/undinet.h (renamed from src/arch/i386/include/undinet.h)0
-rw-r--r--src/arch/x86/include/undipreload.h (renamed from src/arch/i386/include/undipreload.h)0
-rw-r--r--src/arch/x86/include/undirom.h (renamed from src/arch/i386/include/undirom.h)0
-rw-r--r--src/arch/x86/include/vga.h (renamed from src/arch/i386/include/vga.h)0
-rw-r--r--src/arch/x86/interface/pcbios/apm.c (renamed from src/arch/i386/interface/pcbios/apm.c)0
-rw-r--r--src/arch/x86/interface/pcbios/basemem.c (renamed from src/arch/i386/firmware/pcbios/basemem.c)0
-rw-r--r--src/arch/x86/interface/pcbios/bios_console.c (renamed from src/arch/i386/firmware/pcbios/bios_console.c)0
-rw-r--r--src/arch/x86/interface/pcbios/bios_nap.c (renamed from src/arch/i386/interface/pcbios/bios_nap.c)0
-rw-r--r--src/arch/x86/interface/pcbios/bios_reboot.c (renamed from src/arch/i386/interface/pcbios/bios_reboot.c)0
-rw-r--r--src/arch/x86/interface/pcbios/bios_smbios.c (renamed from src/arch/i386/interface/pcbios/bios_smbios.c)0
-rw-r--r--src/arch/x86/interface/pcbios/bios_timer.c (renamed from src/arch/i386/interface/pcbios/bios_timer.c)0
-rw-r--r--src/arch/x86/interface/pcbios/biosint.c (renamed from src/arch/i386/interface/pcbios/biosint.c)0
-rw-r--r--src/arch/x86/interface/pcbios/e820mangler.S (renamed from src/arch/i386/firmware/pcbios/e820mangler.S)0
-rw-r--r--src/arch/x86/interface/pcbios/fakee820.c (renamed from src/arch/i386/firmware/pcbios/fakee820.c)0
-rw-r--r--src/arch/x86/interface/pcbios/hidemem.c (renamed from src/arch/i386/firmware/pcbios/hidemem.c)0
-rw-r--r--src/arch/x86/interface/pcbios/int13.c (renamed from src/arch/i386/interface/pcbios/int13.c)0
-rw-r--r--src/arch/x86/interface/pcbios/int13con.c (renamed from src/arch/i386/interface/pcbios/int13con.c)0
-rw-r--r--src/arch/x86/interface/pcbios/memmap.c (renamed from src/arch/i386/firmware/pcbios/memmap.c)0
-rw-r--r--src/arch/x86/interface/pcbios/memtop_umalloc.c (renamed from src/arch/i386/interface/pcbios/memtop_umalloc.c)0
-rw-r--r--src/arch/x86/interface/pcbios/pcibios.c (renamed from src/arch/i386/interface/pcbios/pcibios.c)0
-rw-r--r--src/arch/x86/interface/pcbios/pnpbios.c (renamed from src/arch/i386/firmware/pcbios/pnpbios.c)0
-rw-r--r--src/arch/x86/interface/pcbios/rtc_entropy.c (renamed from src/arch/i386/interface/pcbios/rtc_entropy.c)0
-rw-r--r--src/arch/x86/interface/pcbios/rtc_time.c (renamed from src/arch/i386/interface/pcbios/rtc_time.c)0
-rw-r--r--src/arch/x86/interface/pcbios/vesafb.c (renamed from src/arch/i386/interface/pcbios/vesafb.c)0
-rw-r--r--src/arch/x86/interface/pxe/pxe_call.c (renamed from src/arch/i386/interface/pxe/pxe_call.c)0
-rw-r--r--src/arch/x86/interface/pxe/pxe_entry.S (renamed from src/arch/i386/interface/pxe/pxe_entry.S)0
-rw-r--r--src/arch/x86/interface/pxe/pxe_exit_hook.c (renamed from src/arch/i386/interface/pxe/pxe_exit_hook.c)0
-rw-r--r--src/arch/x86/interface/pxe/pxe_file.c (renamed from src/arch/i386/interface/pxe/pxe_file.c)0
-rw-r--r--src/arch/x86/interface/pxe/pxe_loader.c (renamed from src/arch/i386/interface/pxe/pxe_loader.c)0
-rw-r--r--src/arch/x86/interface/pxe/pxe_preboot.c (renamed from src/arch/i386/interface/pxe/pxe_preboot.c)0
-rw-r--r--src/arch/x86/interface/pxe/pxe_tftp.c (renamed from src/arch/i386/interface/pxe/pxe_tftp.c)0
-rw-r--r--src/arch/x86/interface/pxe/pxe_udp.c (renamed from src/arch/i386/interface/pxe/pxe_udp.c)0
-rw-r--r--src/arch/x86/interface/pxe/pxe_undi.c (renamed from src/arch/i386/interface/pxe/pxe_undi.c)0
-rw-r--r--src/arch/x86/interface/pxeparent/pxeparent.c (renamed from src/arch/i386/interface/pxeparent/pxeparent.c)0
-rw-r--r--src/arch/x86/prefix/bootpart.S (renamed from src/arch/i386/prefix/bootpart.S)0
-rw-r--r--src/arch/x86/prefix/dskprefix.S (renamed from src/arch/i386/prefix/dskprefix.S)0
-rw-r--r--src/arch/x86/prefix/exeprefix.S (renamed from src/arch/i386/prefix/exeprefix.S)0
-rw-r--r--src/arch/x86/prefix/hdprefix.S (renamed from src/arch/i386/prefix/hdprefix.S)0
-rw-r--r--src/arch/x86/prefix/isaromprefix.S (renamed from src/arch/i386/prefix/isaromprefix.S)0
-rw-r--r--src/arch/x86/prefix/kkkpxeprefix.S (renamed from src/arch/i386/prefix/kkkpxeprefix.S)0
-rw-r--r--src/arch/x86/prefix/kkpxeprefix.S (renamed from src/arch/i386/prefix/kkpxeprefix.S)0
-rw-r--r--src/arch/x86/prefix/kpxeprefix.S (renamed from src/arch/i386/prefix/kpxeprefix.S)0
-rw-r--r--src/arch/x86/prefix/libprefix.S (renamed from src/arch/i386/prefix/libprefix.S)0
-rw-r--r--src/arch/x86/prefix/lkrnprefix.S (renamed from src/arch/i386/prefix/lkrnprefix.S)0
-rw-r--r--src/arch/x86/prefix/mbr.S (renamed from src/arch/i386/prefix/mbr.S)0
-rw-r--r--src/arch/x86/prefix/mromprefix.S (renamed from src/arch/i386/prefix/mromprefix.S)0
-rw-r--r--src/arch/x86/prefix/nbiprefix.S (renamed from src/arch/i386/prefix/nbiprefix.S)0
-rw-r--r--src/arch/x86/prefix/nullprefix.S (renamed from src/arch/i386/prefix/nullprefix.S)0
-rw-r--r--src/arch/x86/prefix/pciromprefix.S (renamed from src/arch/i386/prefix/pciromprefix.S)0
-rw-r--r--src/arch/x86/prefix/pxeprefix.S (renamed from src/arch/i386/prefix/pxeprefix.S)0
-rw-r--r--src/arch/x86/prefix/romprefix.S (renamed from src/arch/i386/prefix/romprefix.S)0
-rw-r--r--src/arch/x86/prefix/undiloader.S (renamed from src/arch/i386/prefix/undiloader.S)0
-rw-r--r--src/arch/x86/prefix/unlzma.S (renamed from src/arch/i386/prefix/unlzma.S)0
-rw-r--r--src/arch/x86/prefix/unlzma16.S (renamed from src/arch/i386/prefix/unlzma16.S)0
-rw-r--r--src/arch/x86/prefix/usbdisk.S (renamed from src/arch/i386/prefix/usbdisk.S)0
-rw-r--r--src/arch/x86/scripts/pcbios.lds (renamed from src/arch/i386/scripts/i386.lds)0
-rw-r--r--src/arch/x86/transitions/liba20.S (renamed from src/arch/i386/transitions/liba20.S)0
-rw-r--r--src/arch/x86/transitions/libkir.S (renamed from src/arch/i386/transitions/libkir.S)0
-rw-r--r--src/arch/x86/transitions/libpm.S (renamed from src/arch/i386/transitions/libpm.S)0
-rw-r--r--src/arch/x86/transitions/librm.S (renamed from src/arch/i386/transitions/librm.S)0
-rw-r--r--src/arch/x86/transitions/librm_mgmt.c (renamed from src/arch/i386/transitions/librm_mgmt.c)0
-rw-r--r--src/arch/x86/transitions/librm_test.c (renamed from src/arch/i386/transitions/librm_test.c)0
-rw-r--r--src/arch/x86_64/Makefile.pcbios6
-rw-r--r--src/arch/x86_64/include/bits/entropy.h12
-rw-r--r--src/arch/x86_64/include/bits/nap.h12
-rw-r--r--src/arch/x86_64/include/bits/reboot.h12
-rw-r--r--src/arch/x86_64/include/bits/sanboot.h12
-rw-r--r--src/arch/x86_64/include/bits/smbios.h10
-rw-r--r--src/arch/x86_64/include/bits/time.h12
-rw-r--r--src/arch/x86_64/include/bits/timer.h10
-rw-r--r--src/arch/x86_64/include/bits/uaccess.h10
-rw-r--r--src/arch/x86_64/include/bits/umalloc.h10
-rw-r--r--src/arch/x86_64/include/pcbios/ipxe/dhcp_arch.h46
155 files changed, 198 insertions, 240 deletions
diff --git a/src/arch/i386/Makefile b/src/arch/i386/Makefile
index 58915b8f9..89393d06c 100644
--- a/src/arch/i386/Makefile
+++ b/src/arch/i386/Makefile
@@ -80,20 +80,11 @@ PIE_FLAGS := $(shell $(PIE_TEST) && $(ECHO) '-fno-PIE -nopie')
WORKAROUND_CFLAGS += $(PIE_FLAGS)
endif
-# Define version string for lkrnprefix.S
-#
-CFLAGS_lkrnprefix += -DVERSION="\"$(VERSION)\""
-
# i386-specific directories containing source files
#
-SRCDIRS += arch/i386/core arch/i386/transitions arch/i386/prefix
-SRCDIRS += arch/i386/firmware/pcbios
+SRCDIRS += arch/i386/core
SRCDIRS += arch/i386/image
-SRCDIRS += arch/i386/interface/pcbios
-SRCDIRS += arch/i386/interface/pxe
-SRCDIRS += arch/i386/interface/pxeparent
-SRCDIRS += arch/i386/interface/syslinux
-SRCDIRS += arch/i386/hci/commands
+SRCDIRS += arch/i386/interface/syslinux
# Include common x86 Makefile
#
diff --git a/src/arch/i386/Makefile.pcbios b/src/arch/i386/Makefile.pcbios
index 8ae37399f..dfb8db0a0 100644
--- a/src/arch/i386/Makefile.pcbios
+++ b/src/arch/i386/Makefile.pcbios
@@ -1,123 +1,6 @@
# -*- makefile -*- : Force emacs to use Makefile mode
-# The i386 linker script
+# Include generic BIOS Makefile
#
-LDSCRIPT = arch/i386/scripts/i386.lds
-
-# Stop ld from complaining about our customised linker script
-#
-LDFLAGS += -N --no-check-sections
-
-# pcbios specific drivers
-SRCDIRS += arch/i386/drivers
-SRCDIRS += arch/i386/drivers/net
-
-# Media types.
-#
-MEDIA += rom
-MEDIA += mrom
-MEDIA += pcirom
-MEDIA += isarom
-MEDIA += pxe
-MEDIA += kpxe
-MEDIA += kkpxe
-MEDIA += kkkpxe
-MEDIA += lkrn
-MEDIA += dsk
-MEDIA += nbi
-MEDIA += hd
-MEDIA += raw
-MEDIA += exe
-
-# Padding rules
-#
-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
-
-# Finalisation rules
-#
-FINALISE_rom = $(PERL) $(FIXROM)
-FINALISE_mrom = $(FINALISE_rom)
-FINALISE_pcirom = $(FINALISE_rom)
-FINALISE_isarom = $(FINALISE_rom)
-
-# 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
-
-# Locations of isolinux files
-#
-SYSLINUX_DIR_LIST := \
- /usr/lib/syslinux \
- /usr/lib/syslinux/bios \
- /usr/lib/syslinux/modules/bios \
- /usr/share/syslinux \
- /usr/share/syslinux/bios \
- /usr/share/syslinux/modules/bios \
- /usr/local/share/syslinux \
- /usr/local/share/syslinux/bios \
- /usr/local/share/syslinux/modules/bios \
- /usr/lib/ISOLINUX
-ISOLINUX_BIN_LIST := \
- $(ISOLINUX_BIN) \
- $(patsubst %,%/isolinux.bin,$(SYSLINUX_DIR_LIST))
-LDLINUX_C32_LIST := \
- $(LDLINUX_C32) \
- $(patsubst %,%/ldlinux.c32,$(SYSLINUX_DIR_LIST))
-ISOLINUX_BIN = $(firstword $(wildcard $(ISOLINUX_BIN_LIST)))
-LDLINUX_C32 = $(firstword $(wildcard $(LDLINUX_C32_LIST)))
-
-# rule to make a non-emulation ISO boot image
-NON_AUTO_MEDIA += iso
-%iso: %lkrn util/geniso
- $(QM)$(ECHO) " [GENISO] $@"
- $(Q)ISOLINUX_BIN=$(ISOLINUX_BIN) LDLINUX_C32=$(LDLINUX_C32) \
- VERSION="$(VERSION)" bash util/geniso -o $@ $<
-
-# rule to make a floppy emulation ISO boot image
-NON_AUTO_MEDIA += liso
-%liso: %lkrn util/geniso
- $(QM)$(ECHO) " [GENISO] $@"
- $(Q)VERSION="$(VERSION)" bash util/geniso -l -o $@ $<
-
-# rule to make a syslinux floppy image (mountable, bootable)
-NON_AUTO_MEDIA += sdsk
-%sdsk: %lkrn util/gensdsk
- $(QM)$(ECHO) " [GENSDSK] $@"
- $(Q)bash util/gensdsk $@ $<
-
-# rule to write disk images to /dev/fd0
-NON_AUTO_MEDIA += fd0
-%fd0 : %dsk
- $(QM)$(ECHO) " [DD] $@"
- $(Q)dd if=$< bs=512 conv=sync of=/dev/fd0
- $(Q)sync
-
-# Special target for building Master Boot Record binary
-$(BIN)/mbr.bin : $(BIN)/mbr.o
- $(QM)$(ECHO) " [OBJCOPY] $@"
- $(Q)$(OBJCOPY) -O binary $< $@
-
-# rule to make a USB disk image
-$(BIN)/usbdisk.bin : $(BIN)/usbdisk.o
- $(QM)$(ECHO) " [OBJCOPY] $@"
- $(Q)$(OBJCOPY) -O binary $< $@
-
-NON_AUTO_MEDIA += usb
-%usb: $(BIN)/usbdisk.bin %hd
- $(QM)$(ECHO) " [FINISH] $@"
- $(Q)cat $^ > $@
-
-# Padded floppy image (e.g. for iLO)
-NON_AUTO_MEDIA += pdsk
-%pdsk : %dsk
- $(Q)cp $< $@
- $(Q)$(PADIMG) --blksize=1474560 $@
+MAKEDEPS += arch/x86/Makefile.pcbios
+include arch/x86/Makefile.pcbios
diff --git a/src/arch/x86/Makefile b/src/arch/x86/Makefile
index 4ab741db7..6ad8031fd 100644
--- a/src/arch/x86/Makefile
+++ b/src/arch/x86/Makefile
@@ -5,12 +5,17 @@ INCDIRS += arch/x86/include
# x86-specific directories containing source files
#
SRCDIRS += arch/x86/core
+SRCDIRS += arch/x86/image
+SRCDIRS += arch/x86/interface/pcbios
+SRCDIRS += arch/x86/interface/pxe
+SRCDIRS += arch/x86/interface/pxeparent
SRCDIRS += arch/x86/interface/efi
SRCDIRS += arch/x86/interface/vmware
SRCDIRS += arch/x86/prefix
SRCDIRS += arch/x86/hci/commands
SRCDIRS += arch/x86/drivers/xen
SRCDIRS += arch/x86/drivers/hyperv
+SRCDIRS += arch/x86/transitions
# breaks building some of the linux-related objects
CFLAGS += -Ulinux
@@ -18,6 +23,10 @@ CFLAGS += -Ulinux
# disable valgrind
CFLAGS += -DNVALGRIND
+# Define version string for lkrnprefix.S
+#
+CFLAGS_lkrnprefix += -DVERSION="\"$(VERSION)\""
+
# Include Hyper-V driver in the all-drivers build
#
DRIVERS_hyperv += hyperv
diff --git a/src/arch/x86/Makefile.pcbios b/src/arch/x86/Makefile.pcbios
new file mode 100644
index 000000000..18a6f7597
--- /dev/null
+++ b/src/arch/x86/Makefile.pcbios
@@ -0,0 +1,123 @@
+# -*- makefile -*- : Force emacs to use Makefile mode
+
+# BIOS-specific directories containing source files
+#
+SRCDIRS += arch/x86/drivers/net
+
+# The i386 linker script
+#
+LDSCRIPT = arch/x86/scripts/pcbios.lds
+
+# Stop ld from complaining about our customised linker script
+#
+LDFLAGS += -N --no-check-sections
+
+# Media types.
+#
+MEDIA += rom
+MEDIA += mrom
+MEDIA += pcirom
+MEDIA += isarom
+MEDIA += pxe
+MEDIA += kpxe
+MEDIA += kkpxe
+MEDIA += kkkpxe
+MEDIA += lkrn
+MEDIA += dsk
+MEDIA += nbi
+MEDIA += hd
+MEDIA += raw
+MEDIA += exe
+
+# Padding rules
+#
+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
+
+# Finalisation rules
+#
+FINALISE_rom = $(PERL) $(FIXROM)
+FINALISE_mrom = $(FINALISE_rom)
+FINALISE_pcirom = $(FINALISE_rom)
+FINALISE_isarom = $(FINALISE_rom)
+
+# 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
+
+# Locations of isolinux files
+#
+SYSLINUX_DIR_LIST := \
+ /usr/lib/syslinux \
+ /usr/lib/syslinux/bios \
+ /usr/lib/syslinux/modules/bios \
+ /usr/share/syslinux \
+ /usr/share/syslinux/bios \
+ /usr/share/syslinux/modules/bios \
+ /usr/local/share/syslinux \
+ /usr/local/share/syslinux/bios \
+ /usr/local/share/syslinux/modules/bios \
+ /usr/lib/ISOLINUX
+ISOLINUX_BIN_LIST := \
+ $(ISOLINUX_BIN) \
+ $(patsubst %,%/isolinux.bin,$(SYSLINUX_DIR_LIST))
+LDLINUX_C32_LIST := \
+ $(LDLINUX_C32) \
+ $(patsubst %,%/ldlinux.c32,$(SYSLINUX_DIR_LIST))
+ISOLINUX_BIN = $(firstword $(wildcard $(ISOLINUX_BIN_LIST)))
+LDLINUX_C32 = $(firstword $(wildcard $(LDLINUX_C32_LIST)))
+
+# rule to make a non-emulation ISO boot image
+NON_AUTO_MEDIA += iso
+%iso: %lkrn util/geniso
+ $(QM)$(ECHO) " [GENISO] $@"
+ $(Q)ISOLINUX_BIN=$(ISOLINUX_BIN) LDLINUX_C32=$(LDLINUX_C32) \
+ VERSION="$(VERSION)" bash util/geniso -o $@ $<
+
+# rule to make a floppy emulation ISO boot image
+NON_AUTO_MEDIA += liso
+%liso: %lkrn util/geniso
+ $(QM)$(ECHO) " [GENISO] $@"
+ $(Q)VERSION="$(VERSION)" bash util/geniso -l -o $@ $<
+
+# rule to make a syslinux floppy image (mountable, bootable)
+NON_AUTO_MEDIA += sdsk
+%sdsk: %lkrn util/gensdsk
+ $(QM)$(ECHO) " [GENSDSK] $@"
+ $(Q)bash util/gensdsk $@ $<
+
+# rule to write disk images to /dev/fd0
+NON_AUTO_MEDIA += fd0
+%fd0 : %dsk
+ $(QM)$(ECHO) " [DD] $@"
+ $(Q)dd if=$< bs=512 conv=sync of=/dev/fd0
+ $(Q)sync
+
+# Special target for building Master Boot Record binary
+$(BIN)/mbr.bin : $(BIN)/mbr.o
+ $(QM)$(ECHO) " [OBJCOPY] $@"
+ $(Q)$(OBJCOPY) -O binary $< $@
+
+# rule to make a USB disk image
+$(BIN)/usbdisk.bin : $(BIN)/usbdisk.o
+ $(QM)$(ECHO) " [OBJCOPY] $@"
+ $(Q)$(OBJCOPY) -O binary $< $@
+
+NON_AUTO_MEDIA += usb
+%usb: $(BIN)/usbdisk.bin %hd
+ $(QM)$(ECHO) " [FINISH] $@"
+ $(Q)cat $^ > $@
+
+# Padded floppy image (e.g. for iLO)
+NON_AUTO_MEDIA += pdsk
+%pdsk : %dsk
+ $(Q)cp $< $@
+ $(Q)$(PADIMG) --blksize=1474560 $@
diff --git a/src/arch/i386/core/basemem_packet.c b/src/arch/x86/core/basemem_packet.c
index 9f5fbf330..9f5fbf330 100644
--- a/src/arch/i386/core/basemem_packet.c
+++ b/src/arch/x86/core/basemem_packet.c
diff --git a/src/arch/i386/core/cachedhcp.c b/src/arch/x86/core/cachedhcp.c
index ff35b9256..ff35b9256 100644
--- a/src/arch/i386/core/cachedhcp.c
+++ b/src/arch/x86/core/cachedhcp.c
diff --git a/src/arch/i386/core/dumpregs.c b/src/arch/x86/core/dumpregs.c
index 82dc21847..82dc21847 100644
--- a/src/arch/i386/core/dumpregs.c
+++ b/src/arch/x86/core/dumpregs.c
diff --git a/src/arch/i386/core/patch_cf.S b/src/arch/x86/core/patch_cf.S
index 4365563fe..4365563fe 100644
--- a/src/arch/i386/core/patch_cf.S
+++ b/src/arch/x86/core/patch_cf.S
diff --git a/src/arch/i386/core/pci_autoboot.c b/src/arch/x86/core/pci_autoboot.c
index 337598091..337598091 100644
--- a/src/arch/i386/core/pci_autoboot.c
+++ b/src/arch/x86/core/pci_autoboot.c
diff --git a/src/arch/i386/core/rdtsc_timer.c b/src/arch/x86/core/rdtsc_timer.c
index e720a239c..e720a239c 100644
--- a/src/arch/i386/core/rdtsc_timer.c
+++ b/src/arch/x86/core/rdtsc_timer.c
diff --git a/src/arch/i386/core/relocate.c b/src/arch/x86/core/relocate.c
index 65a36e008..65a36e008 100644
--- a/src/arch/i386/core/relocate.c
+++ b/src/arch/x86/core/relocate.c
diff --git a/src/arch/i386/core/runtime.c b/src/arch/x86/core/runtime.c
index d160fee04..d160fee04 100644
--- a/src/arch/i386/core/runtime.c
+++ b/src/arch/x86/core/runtime.c
diff --git a/src/arch/i386/core/stack.S b/src/arch/x86/core/stack.S
index 98f1cd9b9..98f1cd9b9 100644
--- a/src/arch/i386/core/stack.S
+++ b/src/arch/x86/core/stack.S
diff --git a/src/arch/i386/core/stack16.S b/src/arch/x86/core/stack16.S
index 4bc6f081a..4bc6f081a 100644
--- a/src/arch/i386/core/stack16.S
+++ b/src/arch/x86/core/stack16.S
diff --git a/src/arch/i386/core/video_subr.c b/src/arch/x86/core/video_subr.c
index 3f701bd96..3f701bd96 100644
--- a/src/arch/i386/core/video_subr.c
+++ b/src/arch/x86/core/video_subr.c
diff --git a/src/arch/i386/core/virtaddr.S b/src/arch/x86/core/virtaddr.S
index 425591570..425591570 100644
--- a/src/arch/i386/core/virtaddr.S
+++ b/src/arch/x86/core/virtaddr.S
diff --git a/src/arch/i386/drivers/net/undi.c b/src/arch/x86/drivers/net/undi.c
index 9820cf629..9820cf629 100644
--- a/src/arch/i386/drivers/net/undi.c
+++ b/src/arch/x86/drivers/net/undi.c
diff --git a/src/arch/i386/drivers/net/undiisr.S b/src/arch/x86/drivers/net/undiisr.S
index b27effe1d..b27effe1d 100644
--- a/src/arch/i386/drivers/net/undiisr.S
+++ b/src/arch/x86/drivers/net/undiisr.S
diff --git a/src/arch/i386/drivers/net/undiload.c b/src/arch/x86/drivers/net/undiload.c
index 7160ee384..7160ee384 100644
--- a/src/arch/i386/drivers/net/undiload.c
+++ b/src/arch/x86/drivers/net/undiload.c
diff --git a/src/arch/i386/drivers/net/undinet.c b/src/arch/x86/drivers/net/undinet.c
index e273ae0a2..e273ae0a2 100644
--- a/src/arch/i386/drivers/net/undinet.c
+++ b/src/arch/x86/drivers/net/undinet.c
diff --git a/src/arch/i386/drivers/net/undionly.c b/src/arch/x86/drivers/net/undionly.c
index 70dbe4bfd..70dbe4bfd 100644
--- a/src/arch/i386/drivers/net/undionly.c
+++ b/src/arch/x86/drivers/net/undionly.c
diff --git a/src/arch/i386/drivers/net/undipreload.c b/src/arch/x86/drivers/net/undipreload.c
index fca771843..fca771843 100644
--- a/src/arch/i386/drivers/net/undipreload.c
+++ b/src/arch/x86/drivers/net/undipreload.c
diff --git a/src/arch/i386/drivers/net/undirom.c b/src/arch/x86/drivers/net/undirom.c
index b54c6170f..b54c6170f 100644
--- a/src/arch/i386/drivers/net/undirom.c
+++ b/src/arch/x86/drivers/net/undirom.c
diff --git a/src/arch/i386/hci/commands/pxe_cmd.c b/src/arch/x86/hci/commands/pxe_cmd.c
index 473b97f97..473b97f97 100644
--- a/src/arch/i386/hci/commands/pxe_cmd.c
+++ b/src/arch/x86/hci/commands/pxe_cmd.c
diff --git a/src/arch/i386/image/bootsector.c b/src/arch/x86/image/bootsector.c
index 67dad04f8..67dad04f8 100644
--- a/src/arch/i386/image/bootsector.c
+++ b/src/arch/x86/image/bootsector.c
diff --git a/src/arch/i386/image/bzimage.c b/src/arch/x86/image/bzimage.c
index d9b5ddc07..d9b5ddc07 100644
--- a/src/arch/i386/image/bzimage.c
+++ b/src/arch/x86/image/bzimage.c
diff --git a/src/arch/i386/image/elfboot.c b/src/arch/x86/image/elfboot.c
index dc3568929..dc3568929 100644
--- a/src/arch/i386/image/elfboot.c
+++ b/src/arch/x86/image/elfboot.c
diff --git a/src/arch/i386/image/initrd.c b/src/arch/x86/image/initrd.c
index 80c197417..80c197417 100644
--- a/src/arch/i386/image/initrd.c
+++ b/src/arch/x86/image/initrd.c
diff --git a/src/arch/i386/image/multiboot.c b/src/arch/x86/image/multiboot.c
index 0c85df708..0c85df708 100644
--- a/src/arch/i386/image/multiboot.c
+++ b/src/arch/x86/image/multiboot.c
diff --git a/src/arch/i386/image/nbi.c b/src/arch/x86/image/nbi.c
index 99046144d..99046144d 100644
--- a/src/arch/i386/image/nbi.c
+++ b/src/arch/x86/image/nbi.c
diff --git a/src/arch/i386/image/pxe_image.c b/src/arch/x86/image/pxe_image.c
index 297a618b8..297a618b8 100644
--- a/src/arch/i386/image/pxe_image.c
+++ b/src/arch/x86/image/pxe_image.c
diff --git a/src/arch/i386/image/sdi.c b/src/arch/x86/image/sdi.c
index fa2d0b73f..fa2d0b73f 100644
--- a/src/arch/i386/image/sdi.c
+++ b/src/arch/x86/image/sdi.c
diff --git a/src/arch/i386/include/basemem.h b/src/arch/x86/include/basemem.h
index 01c2ea917..01c2ea917 100644
--- a/src/arch/i386/include/basemem.h
+++ b/src/arch/x86/include/basemem.h
diff --git a/src/arch/i386/include/basemem_packet.h b/src/arch/x86/include/basemem_packet.h
index def6dee31..def6dee31 100644
--- a/src/arch/i386/include/basemem_packet.h
+++ b/src/arch/x86/include/basemem_packet.h
diff --git a/src/arch/i386/include/bios.h b/src/arch/x86/include/bios.h
index 988bbc62b..988bbc62b 100644
--- a/src/arch/i386/include/bios.h
+++ b/src/arch/x86/include/bios.h
diff --git a/src/arch/i386/include/bios_disks.h b/src/arch/x86/include/bios_disks.h
index 0dd7c4ebb..0dd7c4ebb 100644
--- a/src/arch/i386/include/bios_disks.h
+++ b/src/arch/x86/include/bios_disks.h
diff --git a/src/arch/i386/include/biosint.h b/src/arch/x86/include/biosint.h
index f47116f70..f47116f70 100644
--- a/src/arch/i386/include/biosint.h
+++ b/src/arch/x86/include/biosint.h
diff --git a/src/arch/i386/include/bits/entropy.h b/src/arch/x86/include/bits/entropy.h
index bfeb5e3b5..5ac7fcd2e 100644
--- a/src/arch/i386/include/bits/entropy.h
+++ b/src/arch/x86/include/bits/entropy.h
@@ -3,7 +3,7 @@
/** @file
*
- * i386-specific entropy API implementations
+ * x86-specific entropy API implementations
*
*/
diff --git a/src/arch/i386/include/bits/nap.h b/src/arch/x86/include/bits/nap.h
index e8bcfd13b..7103b94c0 100644
--- a/src/arch/i386/include/bits/nap.h
+++ b/src/arch/x86/include/bits/nap.h
@@ -3,7 +3,7 @@
/** @file
*
- * i386-specific CPU sleeping API implementations
+ * x86-specific CPU sleeping API implementations
*
*/
diff --git a/src/arch/i386/include/bits/reboot.h b/src/arch/x86/include/bits/reboot.h
index 803dacfe4..e702dd3d0 100644
--- a/src/arch/i386/include/bits/reboot.h
+++ b/src/arch/x86/include/bits/reboot.h
@@ -3,7 +3,7 @@
/** @file
*
- * i386-specific reboot API implementations
+ * x86-specific reboot API implementations
*
*/
diff --git a/src/arch/i386/include/bits/sanboot.h b/src/arch/x86/include/bits/sanboot.h
index f02d2e649..1b9924e64 100644
--- a/src/arch/i386/include/bits/sanboot.h
+++ b/src/arch/x86/include/bits/sanboot.h
@@ -3,7 +3,7 @@
/** @file
*
- * i386-specific sanboot API implementations
+ * x86-specific sanboot API implementations
*
*/
diff --git a/src/arch/i386/include/bits/smbios.h b/src/arch/x86/include/bits/smbios.h
index 2ab31e74b..9977c87ac 100644
--- a/src/arch/i386/include/bits/smbios.h
+++ b/src/arch/x86/include/bits/smbios.h
@@ -3,7 +3,7 @@
/** @file
*
- * i386-specific SMBIOS API implementations
+ * x86-specific SMBIOS API implementations
*
*/
diff --git a/src/arch/i386/include/bits/time.h b/src/arch/x86/include/bits/time.h
index 6a5d63d32..556d96f64 100644
--- a/src/arch/i386/include/bits/time.h
+++ b/src/arch/x86/include/bits/time.h
@@ -3,7 +3,7 @@
/** @file
*
- * i386-specific time API implementations
+ * x86-specific time API implementations
*
*/
diff --git a/src/arch/i386/include/bits/timer.h b/src/arch/x86/include/bits/timer.h
index f7d86d78c..b0ff5ee11 100644
--- a/src/arch/i386/include/bits/timer.h
+++ b/src/arch/x86/include/bits/timer.h
@@ -3,7 +3,7 @@
/** @file
*
- * i386-specific timer API implementations
+ * x86-specific timer API implementations
*
*/
diff --git a/src/arch/i386/include/bits/uaccess.h b/src/arch/x86/include/bits/uaccess.h
index aac09ba95..e9e7e5af5 100644
--- a/src/arch/i386/include/bits/uaccess.h
+++ b/src/arch/x86/include/bits/uaccess.h
@@ -3,7 +3,7 @@
/** @file
*
- * i386-specific user access API implementations
+ * x86-specific user access API implementations
*
*/
diff --git a/src/arch/i386/include/bits/umalloc.h b/src/arch/x86/include/bits/umalloc.h
index 113f16fd1..5d1f554d8 100644
--- a/src/arch/i386/include/bits/umalloc.h
+++ b/src/arch/x86/include/bits/umalloc.h
@@ -3,7 +3,7 @@
/** @file
*
- * i386-specific user memory allocation API implementations
+ * x86-specific user memory allocation API implementations
*
*/
diff --git a/src/arch/i386/include/bochs.h b/src/arch/x86/include/bochs.h
index 9d090fc12..9d090fc12 100644
--- a/src/arch/i386/include/bochs.h
+++ b/src/arch/x86/include/bochs.h
diff --git a/src/arch/i386/include/bootsector.h b/src/arch/x86/include/bootsector.h
index c5d35aae3..c5d35aae3 100644
--- a/src/arch/i386/include/bootsector.h
+++ b/src/arch/x86/include/bootsector.h
diff --git a/src/arch/i386/include/bzimage.h b/src/arch/x86/include/bzimage.h
index 4933ce5b1..4933ce5b1 100644
--- a/src/arch/i386/include/bzimage.h
+++ b/src/arch/x86/include/bzimage.h
diff --git a/src/arch/i386/include/fakee820.h b/src/arch/x86/include/fakee820.h
index 552b1e48d..552b1e48d 100644
--- a/src/arch/i386/include/fakee820.h
+++ b/src/arch/x86/include/fakee820.h
diff --git a/src/arch/i386/include/initrd.h b/src/arch/x86/include/initrd.h
index ddb3e5a45..ddb3e5a45 100644
--- a/src/arch/i386/include/initrd.h
+++ b/src/arch/x86/include/initrd.h
diff --git a/src/arch/i386/include/int13.h b/src/arch/x86/include/int13.h
index f82a583c6..f82a583c6 100644
--- a/src/arch/i386/include/int13.h
+++ b/src/arch/x86/include/int13.h
diff --git a/src/arch/i386/include/ipxe/bios_nap.h b/src/arch/x86/include/ipxe/bios_nap.h
index c9b82c1e5..c9b82c1e5 100644
--- a/src/arch/i386/include/ipxe/bios_nap.h
+++ b/src/arch/x86/include/ipxe/bios_nap.h
diff --git a/src/arch/i386/include/ipxe/bios_reboot.h b/src/arch/x86/include/ipxe/bios_reboot.h
index 3f6df9073..3f6df9073 100644
--- a/src/arch/i386/include/ipxe/bios_reboot.h
+++ b/src/arch/x86/include/ipxe/bios_reboot.h
diff --git a/src/arch/i386/include/ipxe/bios_sanboot.h b/src/arch/x86/include/ipxe/bios_sanboot.h
index 1a86b7d57..1a86b7d57 100644
--- a/src/arch/i386/include/ipxe/bios_sanboot.h
+++ b/src/arch/x86/include/ipxe/bios_sanboot.h
diff --git a/src/arch/i386/include/ipxe/bios_smbios.h b/src/arch/x86/include/ipxe/bios_smbios.h
index 9f7f9c8ff..9f7f9c8ff 100644
--- a/src/arch/i386/include/ipxe/bios_smbios.h
+++ b/src/arch/x86/include/ipxe/bios_smbios.h
diff --git a/src/arch/i386/include/ipxe/bios_timer.h b/src/arch/x86/include/ipxe/bios_timer.h
index 6b88a623c..6b88a623c 100644
--- a/src/arch/i386/include/ipxe/bios_timer.h
+++ b/src/arch/x86/include/ipxe/bios_timer.h
diff --git a/src/arch/i386/include/ipxe/errno/pcbios.h b/src/arch/x86/include/ipxe/errno/pcbios.h
index 6312adaa4..6312adaa4 100644
--- a/src/arch/i386/include/ipxe/errno/pcbios.h
+++ b/src/arch/x86/include/ipxe/errno/pcbios.h
diff --git a/src/arch/i386/include/ipxe/memtop_umalloc.h b/src/arch/x86/include/ipxe/memtop_umalloc.h
index dee055d16..dee055d16 100644
--- a/src/arch/i386/include/ipxe/memtop_umalloc.h
+++ b/src/arch/x86/include/ipxe/memtop_umalloc.h
diff --git a/src/arch/i386/include/ipxe/rdtsc_timer.h b/src/arch/x86/include/ipxe/rdtsc_timer.h
index 598f4bb08..598f4bb08 100644
--- a/src/arch/i386/include/ipxe/rdtsc_timer.h
+++ b/src/arch/x86/include/ipxe/rdtsc_timer.h
diff --git a/src/arch/i386/include/ipxe/rtc_entropy.h b/src/arch/x86/include/ipxe/rtc_entropy.h
index e214745d0..e214745d0 100644
--- a/src/arch/i386/include/ipxe/rtc_entropy.h
+++ b/src/arch/x86/include/ipxe/rtc_entropy.h
diff --git a/src/arch/i386/include/ipxe/rtc_time.h b/src/arch/x86/include/ipxe/rtc_time.h
index cb8c7f49e..cb8c7f49e 100644
--- a/src/arch/i386/include/ipxe/rtc_time.h
+++ b/src/arch/x86/include/ipxe/rtc_time.h
diff --git a/src/arch/i386/include/ipxe/vesafb.h b/src/arch/x86/include/ipxe/vesafb.h
index efc8f2cb8..efc8f2cb8 100644
--- a/src/arch/i386/include/ipxe/vesafb.h
+++ b/src/arch/x86/include/ipxe/vesafb.h
diff --git a/src/arch/i386/include/kir.h b/src/arch/x86/include/kir.h
index 84633d26f..84633d26f 100644
--- a/src/arch/i386/include/kir.h
+++ b/src/arch/x86/include/kir.h
diff --git a/src/arch/i386/include/libkir.h b/src/arch/x86/include/libkir.h
index 1f5b13504..1f5b13504 100644
--- a/src/arch/i386/include/libkir.h
+++ b/src/arch/x86/include/libkir.h
diff --git a/src/arch/i386/include/librm.h b/src/arch/x86/include/librm.h
index 44d931ea0..44d931ea0 100644
--- a/src/arch/i386/include/librm.h
+++ b/src/arch/x86/include/librm.h
diff --git a/src/arch/i386/include/memsizes.h b/src/arch/x86/include/memsizes.h
index f115f7574..f115f7574 100644
--- a/src/arch/i386/include/memsizes.h
+++ b/src/arch/x86/include/memsizes.h
diff --git a/src/arch/i386/include/multiboot.h b/src/arch/x86/include/multiboot.h
index ae09df6c7..ae09df6c7 100644
--- a/src/arch/i386/include/multiboot.h
+++ b/src/arch/x86/include/multiboot.h
diff --git a/src/arch/i386/include/pnpbios.h b/src/arch/x86/include/pnpbios.h
index d14873700..d14873700 100644
--- a/src/arch/i386/include/pnpbios.h
+++ b/src/arch/x86/include/pnpbios.h
diff --git a/src/arch/i386/include/pxe.h b/src/arch/x86/include/pxe.h
index 54649b504..54649b504 100644
--- a/src/arch/i386/include/pxe.h
+++ b/src/arch/x86/include/pxe.h
diff --git a/src/arch/i386/include/pxe_api.h b/src/arch/x86/include/pxe_api.h
index 3110d26da..3110d26da 100644
--- a/src/arch/i386/include/pxe_api.h
+++ b/src/arch/x86/include/pxe_api.h
diff --git a/src/arch/i386/include/pxe_call.h b/src/arch/x86/include/pxe_call.h
index 2ad0a9505..2ad0a9505 100644
--- a/src/arch/i386/include/pxe_call.h
+++ b/src/arch/x86/include/pxe_call.h
diff --git a/src/arch/i386/include/pxe_error.h b/src/arch/x86/include/pxe_error.h
index 51298e665..51298e665 100644
--- a/src/arch/i386/include/pxe_error.h
+++ b/src/arch/x86/include/pxe_error.h
diff --git a/src/arch/i386/include/pxe_types.h b/src/arch/x86/include/pxe_types.h
index 483666e33..483666e33 100644
--- a/src/arch/i386/include/pxe_types.h
+++ b/src/arch/x86/include/pxe_types.h
diff --git a/src/arch/i386/include/pxeparent.h b/src/arch/x86/include/pxeparent.h
index b31e24a76..b31e24a76 100644
--- a/src/arch/i386/include/pxeparent.h
+++ b/src/arch/x86/include/pxeparent.h
diff --git a/src/arch/i386/include/realmode.h b/src/arch/x86/include/realmode.h
index 4defd3b97..4defd3b97 100644
--- a/src/arch/i386/include/realmode.h
+++ b/src/arch/x86/include/realmode.h
diff --git a/src/arch/i386/include/registers.h b/src/arch/x86/include/registers.h
index d9aa3c376..d9aa3c376 100644
--- a/src/arch/i386/include/registers.h
+++ b/src/arch/x86/include/registers.h
diff --git a/src/arch/i386/include/rmsetjmp.h b/src/arch/x86/include/rmsetjmp.h
index 3470be477..3470be477 100644
--- a/src/arch/i386/include/rmsetjmp.h
+++ b/src/arch/x86/include/rmsetjmp.h
diff --git a/src/arch/i386/include/rtc.h b/src/arch/x86/include/rtc.h
index 6294b63e3..6294b63e3 100644
--- a/src/arch/i386/include/rtc.h
+++ b/src/arch/x86/include/rtc.h
diff --git a/src/arch/i386/include/sdi.h b/src/arch/x86/include/sdi.h
index 806c3f194..806c3f194 100644
--- a/src/arch/i386/include/sdi.h
+++ b/src/arch/x86/include/sdi.h
diff --git a/src/arch/i386/include/undi.h b/src/arch/x86/include/undi.h
index 7a5624f93..7a5624f93 100644
--- a/src/arch/i386/include/undi.h
+++ b/src/arch/x86/include/undi.h
diff --git a/src/arch/i386/include/undiload.h b/src/arch/x86/include/undiload.h
index 235e7a79e..235e7a79e 100644
--- a/src/arch/i386/include/undiload.h
+++ b/src/arch/x86/include/undiload.h
diff --git a/src/arch/i386/include/undinet.h b/src/arch/x86/include/undinet.h
index 2798c4466..2798c4466 100644
--- a/src/arch/i386/include/undinet.h
+++ b/src/arch/x86/include/undinet.h
diff --git a/src/arch/i386/include/undipreload.h b/src/arch/x86/include/undipreload.h
index 57f493cec..57f493cec 100644
--- a/src/arch/i386/include/undipreload.h
+++ b/src/arch/x86/include/undipreload.h
diff --git a/src/arch/i386/include/undirom.h b/src/arch/x86/include/undirom.h
index 1c530118d..1c530118d 100644
--- a/src/arch/i386/include/undirom.h
+++ b/src/arch/x86/include/undirom.h
diff --git a/src/arch/i386/include/vga.h b/src/arch/x86/include/vga.h
index 01fc39d86..01fc39d86 100644
--- a/src/arch/i386/include/vga.h
+++ b/src/arch/x86/include/vga.h
diff --git a/src/arch/i386/interface/pcbios/apm.c b/src/arch/x86/interface/pcbios/apm.c
index 50b19cb81..50b19cb81 100644
--- a/src/arch/i386/interface/pcbios/apm.c
+++ b/src/arch/x86/interface/pcbios/apm.c
diff --git a/src/arch/i386/firmware/pcbios/basemem.c b/src/arch/x86/interface/pcbios/basemem.c
index 6a46081aa..6a46081aa 100644
--- a/src/arch/i386/firmware/pcbios/basemem.c
+++ b/src/arch/x86/interface/pcbios/basemem.c
diff --git a/src/arch/i386/firmware/pcbios/bios_console.c b/src/arch/x86/interface/pcbios/bios_console.c
index cfffd9542..cfffd9542 100644
--- a/src/arch/i386/firmware/pcbios/bios_console.c
+++ b/src/arch/x86/interface/pcbios/bios_console.c
diff --git a/src/arch/i386/interface/pcbios/bios_nap.c b/src/arch/x86/interface/pcbios/bios_nap.c
index f1ba8297b..f1ba8297b 100644
--- a/src/arch/i386/interface/pcbios/bios_nap.c
+++ b/src/arch/x86/interface/pcbios/bios_nap.c
diff --git a/src/arch/i386/interface/pcbios/bios_reboot.c b/src/arch/x86/interface/pcbios/bios_reboot.c
index 10a1ecb89..10a1ecb89 100644
--- a/src/arch/i386/interface/pcbios/bios_reboot.c
+++ b/src/arch/x86/interface/pcbios/bios_reboot.c
diff --git a/src/arch/i386/interface/pcbios/bios_smbios.c b/src/arch/x86/interface/pcbios/bios_smbios.c
index a8c0fc325..a8c0fc325 100644
--- a/src/arch/i386/interface/pcbios/bios_smbios.c
+++ b/src/arch/x86/interface/pcbios/bios_smbios.c
diff --git a/src/arch/i386/interface/pcbios/bios_timer.c b/src/arch/x86/interface/pcbios/bios_timer.c
index 3299c9aae..3299c9aae 100644
--- a/src/arch/i386/interface/pcbios/bios_timer.c
+++ b/src/arch/x86/interface/pcbios/bios_timer.c
diff --git a/src/arch/i386/interface/pcbios/biosint.c b/src/arch/x86/interface/pcbios/biosint.c
index 667e9ed81..667e9ed81 100644
--- a/src/arch/i386/interface/pcbios/biosint.c
+++ b/src/arch/x86/interface/pcbios/biosint.c
diff --git a/src/arch/i386/firmware/pcbios/e820mangler.S b/src/arch/x86/interface/pcbios/e820mangler.S
index d5d97b482..d5d97b482 100644
--- a/src/arch/i386/firmware/pcbios/e820mangler.S
+++ b/src/arch/x86/interface/pcbios/e820mangler.S
diff --git a/src/arch/i386/firmware/pcbios/fakee820.c b/src/arch/x86/interface/pcbios/fakee820.c
index 8b083c4f0..8b083c4f0 100644
--- a/src/arch/i386/firmware/pcbios/fakee820.c
+++ b/src/arch/x86/interface/pcbios/fakee820.c
diff --git a/src/arch/i386/firmware/pcbios/hidemem.c b/src/arch/x86/interface/pcbios/hidemem.c
index a3728123c..a3728123c 100644
--- a/src/arch/i386/firmware/pcbios/hidemem.c
+++ b/src/arch/x86/interface/pcbios/hidemem.c
diff --git a/src/arch/i386/interface/pcbios/int13.c b/src/arch/x86/interface/pcbios/int13.c
index 6ba129218..6ba129218 100644
--- a/src/arch/i386/interface/pcbios/int13.c
+++ b/src/arch/x86/interface/pcbios/int13.c
diff --git a/src/arch/i386/interface/pcbios/int13con.c b/src/arch/x86/interface/pcbios/int13con.c
index 2414c6909..2414c6909 100644
--- a/src/arch/i386/interface/pcbios/int13con.c
+++ b/src/arch/x86/interface/pcbios/int13con.c
diff --git a/src/arch/i386/firmware/pcbios/memmap.c b/src/arch/x86/interface/pcbios/memmap.c
index 88bfec9f4..88bfec9f4 100644
--- a/src/arch/i386/firmware/pcbios/memmap.c
+++ b/src/arch/x86/interface/pcbios/memmap.c
diff --git a/src/arch/i386/interface/pcbios/memtop_umalloc.c b/src/arch/x86/interface/pcbios/memtop_umalloc.c
index 957f8e324..957f8e324 100644
--- a/src/arch/i386/interface/pcbios/memtop_umalloc.c
+++ b/src/arch/x86/interface/pcbios/memtop_umalloc.c
diff --git a/src/arch/i386/interface/pcbios/pcibios.c b/src/arch/x86/interface/pcbios/pcibios.c
index 34efa0b39..34efa0b39 100644
--- a/src/arch/i386/interface/pcbios/pcibios.c
+++ b/src/arch/x86/interface/pcbios/pcibios.c
diff --git a/src/arch/i386/firmware/pcbios/pnpbios.c b/src/arch/x86/interface/pcbios/pnpbios.c
index 20ec35d75..20ec35d75 100644
--- a/src/arch/i386/firmware/pcbios/pnpbios.c
+++ b/src/arch/x86/interface/pcbios/pnpbios.c
diff --git a/src/arch/i386/interface/pcbios/rtc_entropy.c b/src/arch/x86/interface/pcbios/rtc_entropy.c
index 6e7ac833e..6e7ac833e 100644
--- a/src/arch/i386/interface/pcbios/rtc_entropy.c
+++ b/src/arch/x86/interface/pcbios/rtc_entropy.c
diff --git a/src/arch/i386/interface/pcbios/rtc_time.c b/src/arch/x86/interface/pcbios/rtc_time.c
index cdbeac8d5..cdbeac8d5 100644
--- a/src/arch/i386/interface/pcbios/rtc_time.c
+++ b/src/arch/x86/interface/pcbios/rtc_time.c
diff --git a/src/arch/i386/interface/pcbios/vesafb.c b/src/arch/x86/interface/pcbios/vesafb.c
index 50e485852..50e485852 100644
--- a/src/arch/i386/interface/pcbios/vesafb.c
+++ b/src/arch/x86/interface/pcbios/vesafb.c
diff --git a/src/arch/i386/interface/pxe/pxe_call.c b/src/arch/x86/interface/pxe/pxe_call.c
index 671182991..671182991 100644
--- a/src/arch/i386/interface/pxe/pxe_call.c
+++ b/src/arch/x86/interface/pxe/pxe_call.c
diff --git a/src/arch/i386/interface/pxe/pxe_entry.S b/src/arch/x86/interface/pxe/pxe_entry.S
index 07852cd50..07852cd50 100644
--- a/src/arch/i386/interface/pxe/pxe_entry.S
+++ b/src/arch/x86/interface/pxe/pxe_entry.S
diff --git a/src/arch/i386/interface/pxe/pxe_exit_hook.c b/src/arch/x86/interface/pxe/pxe_exit_hook.c
index f92dae0d1..f92dae0d1 100644
--- a/src/arch/i386/interface/pxe/pxe_exit_hook.c
+++ b/src/arch/x86/interface/pxe/pxe_exit_hook.c
diff --git a/src/arch/i386/interface/pxe/pxe_file.c b/src/arch/x86/interface/pxe/pxe_file.c
index 456ffb5fd..456ffb5fd 100644
--- a/src/arch/i386/interface/pxe/pxe_file.c
+++ b/src/arch/x86/interface/pxe/pxe_file.c
diff --git a/src/arch/i386/interface/pxe/pxe_loader.c b/src/arch/x86/interface/pxe/pxe_loader.c
index e6a2e072a..e6a2e072a 100644
--- a/src/arch/i386/interface/pxe/pxe_loader.c
+++ b/src/arch/x86/interface/pxe/pxe_loader.c
diff --git a/src/arch/i386/interface/pxe/pxe_preboot.c b/src/arch/x86/interface/pxe/pxe_preboot.c
index 09e721b34..09e721b34 100644
--- a/src/arch/i386/interface/pxe/pxe_preboot.c
+++ b/src/arch/x86/interface/pxe/pxe_preboot.c
diff --git a/src/arch/i386/interface/pxe/pxe_tftp.c b/src/arch/x86/interface/pxe/pxe_tftp.c
index 3b4c6d847..3b4c6d847 100644
--- a/src/arch/i386/interface/pxe/pxe_tftp.c
+++ b/src/arch/x86/interface/pxe/pxe_tftp.c
diff --git a/src/arch/i386/interface/pxe/pxe_udp.c b/src/arch/x86/interface/pxe/pxe_udp.c
index 071cb59db..071cb59db 100644
--- a/src/arch/i386/interface/pxe/pxe_udp.c
+++ b/src/arch/x86/interface/pxe/pxe_udp.c
diff --git a/src/arch/i386/interface/pxe/pxe_undi.c b/src/arch/x86/interface/pxe/pxe_undi.c
index 2eb68178a..2eb68178a 100644
--- a/src/arch/i386/interface/pxe/pxe_undi.c
+++ b/src/arch/x86/interface/pxe/pxe_undi.c
diff --git a/src/arch/i386/interface/pxeparent/pxeparent.c b/src/arch/x86/interface/pxeparent/pxeparent.c
index 0b6be9a03..0b6be9a03 100644
--- a/src/arch/i386/interface/pxeparent/pxeparent.c
+++ b/src/arch/x86/interface/pxeparent/pxeparent.c
diff --git a/src/arch/i386/prefix/bootpart.S b/src/arch/x86/prefix/bootpart.S
index 6d0c6034a..6d0c6034a 100644
--- a/src/arch/i386/prefix/bootpart.S
+++ b/src/arch/x86/prefix/bootpart.S
diff --git a/src/arch/i386/prefix/dskprefix.S b/src/arch/x86/prefix/dskprefix.S
index 7aa017ccd..7aa017ccd 100644
--- a/src/arch/i386/prefix/dskprefix.S
+++ b/src/arch/x86/prefix/dskprefix.S
diff --git a/src/arch/i386/prefix/exeprefix.S b/src/arch/x86/prefix/exeprefix.S
index 5c648d51d..5c648d51d 100644
--- a/src/arch/i386/prefix/exeprefix.S
+++ b/src/arch/x86/prefix/exeprefix.S
diff --git a/src/arch/i386/prefix/hdprefix.S b/src/arch/x86/prefix/hdprefix.S
index 1d012d80b..1d012d80b 100644
--- a/src/arch/i386/prefix/hdprefix.S
+++ b/src/arch/x86/prefix/hdprefix.S
diff --git a/src/arch/i386/prefix/isaromprefix.S b/src/arch/x86/prefix/isaromprefix.S
index fb49819ee..fb49819ee 100644
--- a/src/arch/i386/prefix/isaromprefix.S
+++ b/src/arch/x86/prefix/isaromprefix.S
diff --git a/src/arch/i386/prefix/kkkpxeprefix.S b/src/arch/x86/prefix/kkkpxeprefix.S
index 6e43cd26a..6e43cd26a 100644
--- a/src/arch/i386/prefix/kkkpxeprefix.S
+++ b/src/arch/x86/prefix/kkkpxeprefix.S
diff --git a/src/arch/i386/prefix/kkpxeprefix.S b/src/arch/x86/prefix/kkpxeprefix.S
index 3c17dbdb1..3c17dbdb1 100644
--- a/src/arch/i386/prefix/kkpxeprefix.S
+++ b/src/arch/x86/prefix/kkpxeprefix.S
diff --git a/src/arch/i386/prefix/kpxeprefix.S b/src/arch/x86/prefix/kpxeprefix.S
index 200006d83..200006d83 100644
--- a/src/arch/i386/prefix/kpxeprefix.S
+++ b/src/arch/x86/prefix/kpxeprefix.S
diff --git a/src/arch/i386/prefix/libprefix.S b/src/arch/x86/prefix/libprefix.S
index 3cdb6ec9a..3cdb6ec9a 100644
--- a/src/arch/i386/prefix/libprefix.S
+++ b/src/arch/x86/prefix/libprefix.S
diff --git a/src/arch/i386/prefix/lkrnprefix.S b/src/arch/x86/prefix/lkrnprefix.S
index 64135e14b..64135e14b 100644
--- a/src/arch/i386/prefix/lkrnprefix.S
+++ b/src/arch/x86/prefix/lkrnprefix.S
diff --git a/src/arch/i386/prefix/mbr.S b/src/arch/x86/prefix/mbr.S
index a1e237de8..a1e237de8 100644
--- a/src/arch/i386/prefix/mbr.S
+++ b/src/arch/x86/prefix/mbr.S
diff --git a/src/arch/i386/prefix/mromprefix.S b/src/arch/x86/prefix/mromprefix.S
index b636b92af..b636b92af 100644
--- a/src/arch/i386/prefix/mromprefix.S
+++ b/src/arch/x86/prefix/mromprefix.S
diff --git a/src/arch/i386/prefix/nbiprefix.S b/src/arch/x86/prefix/nbiprefix.S
index 16c79566c..16c79566c 100644
--- a/src/arch/i386/prefix/nbiprefix.S
+++ b/src/arch/x86/prefix/nbiprefix.S
diff --git a/src/arch/i386/prefix/nullprefix.S b/src/arch/x86/prefix/nullprefix.S
index bd0ff339e..bd0ff339e 100644
--- a/src/arch/i386/prefix/nullprefix.S
+++ b/src/arch/x86/prefix/nullprefix.S
diff --git a/src/arch/i386/prefix/pciromprefix.S b/src/arch/x86/prefix/pciromprefix.S
index 5a5a49647..5a5a49647 100644
--- a/src/arch/i386/prefix/pciromprefix.S
+++ b/src/arch/x86/prefix/pciromprefix.S
diff --git a/src/arch/i386/prefix/pxeprefix.S b/src/arch/x86/prefix/pxeprefix.S
index 465ce4345..465ce4345 100644
--- a/src/arch/i386/prefix/pxeprefix.S
+++ b/src/arch/x86/prefix/pxeprefix.S
diff --git a/src/arch/i386/prefix/romprefix.S b/src/arch/x86/prefix/romprefix.S
index 8974c5398..8974c5398 100644
--- a/src/arch/i386/prefix/romprefix.S
+++ b/src/arch/x86/prefix/romprefix.S
diff --git a/src/arch/i386/prefix/undiloader.S b/src/arch/x86/prefix/undiloader.S
index 5cace44b7..5cace44b7 100644
--- a/src/arch/i386/prefix/undiloader.S
+++ b/src/arch/x86/prefix/undiloader.S
diff --git a/src/arch/i386/prefix/unlzma.S b/src/arch/x86/prefix/unlzma.S
index 8d4b3c1a8..8d4b3c1a8 100644
--- a/src/arch/i386/prefix/unlzma.S
+++ b/src/arch/x86/prefix/unlzma.S
diff --git a/src/arch/i386/prefix/unlzma16.S b/src/arch/x86/prefix/unlzma16.S
index 32b43f0dc..32b43f0dc 100644
--- a/src/arch/i386/prefix/unlzma16.S
+++ b/src/arch/x86/prefix/unlzma16.S
diff --git a/src/arch/i386/prefix/usbdisk.S b/src/arch/x86/prefix/usbdisk.S
index 9676406e2..9676406e2 100644
--- a/src/arch/i386/prefix/usbdisk.S
+++ b/src/arch/x86/prefix/usbdisk.S
diff --git a/src/arch/i386/scripts/i386.lds b/src/arch/x86/scripts/pcbios.lds
index 865591ae2..865591ae2 100644
--- a/src/arch/i386/scripts/i386.lds
+++ b/src/arch/x86/scripts/pcbios.lds
diff --git a/src/arch/i386/transitions/liba20.S b/src/arch/x86/transitions/liba20.S
index 6c1e1f62f..6c1e1f62f 100644
--- a/src/arch/i386/transitions/liba20.S
+++ b/src/arch/x86/transitions/liba20.S
diff --git a/src/arch/i386/transitions/libkir.S b/src/arch/x86/transitions/libkir.S
index fa9459d52..fa9459d52 100644
--- a/src/arch/i386/transitions/libkir.S
+++ b/src/arch/x86/transitions/libkir.S
diff --git a/src/arch/i386/transitions/libpm.S b/src/arch/x86/transitions/libpm.S
index e69de29bb..e69de29bb 100644
--- a/src/arch/i386/transitions/libpm.S
+++ b/src/arch/x86/transitions/libpm.S
diff --git a/src/arch/i386/transitions/librm.S b/src/arch/x86/transitions/librm.S
index 863e22415..863e22415 100644
--- a/src/arch/i386/transitions/librm.S
+++ b/src/arch/x86/transitions/librm.S
diff --git a/src/arch/i386/transitions/librm_mgmt.c b/src/arch/x86/transitions/librm_mgmt.c
index 32695ae0c..32695ae0c 100644
--- a/src/arch/i386/transitions/librm_mgmt.c
+++ b/src/arch/x86/transitions/librm_mgmt.c
diff --git a/src/arch/i386/transitions/librm_test.c b/src/arch/x86/transitions/librm_test.c
index 496d56124..496d56124 100644
--- a/src/arch/i386/transitions/librm_test.c
+++ b/src/arch/x86/transitions/librm_test.c
diff --git a/src/arch/x86_64/Makefile.pcbios b/src/arch/x86_64/Makefile.pcbios
new file mode 100644
index 000000000..dfb8db0a0
--- /dev/null
+++ b/src/arch/x86_64/Makefile.pcbios
@@ -0,0 +1,6 @@
+# -*- makefile -*- : Force emacs to use Makefile mode
+
+# Include generic BIOS Makefile
+#
+MAKEDEPS += arch/x86/Makefile.pcbios
+include arch/x86/Makefile.pcbios
diff --git a/src/arch/x86_64/include/bits/entropy.h b/src/arch/x86_64/include/bits/entropy.h
deleted file mode 100644
index a9b3bc10e..000000000
--- a/src/arch/x86_64/include/bits/entropy.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _BITS_ENTROPY_H
-#define _BITS_ENTROPY_H
-
-/** @file
- *
- * x86_64-specific entropy API implementations
- *
- */
-
-FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
-#endif /* _BITS_ENTROPY_H */
diff --git a/src/arch/x86_64/include/bits/nap.h b/src/arch/x86_64/include/bits/nap.h
deleted file mode 100644
index 8b42c0a4a..000000000
--- a/src/arch/x86_64/include/bits/nap.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _BITS_NAP_H
-#define _BITS_NAP_H
-
-/** @file
- *
- * x86_64-specific CPU sleeping API implementations
- *
- */
-
-#include <ipxe/efi/efix86_nap.h>
-
-#endif /* _BITS_MAP_H */
diff --git a/src/arch/x86_64/include/bits/reboot.h b/src/arch/x86_64/include/bits/reboot.h
deleted file mode 100644
index f9bcd6a7b..000000000
--- a/src/arch/x86_64/include/bits/reboot.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _BITS_REBOOT_H
-#define _BITS_REBOOT_H
-
-/** @file
- *
- * x86_64-specific reboot API implementations
- *
- */
-
-FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
-#endif /* _BITS_REBOOT_H */
diff --git a/src/arch/x86_64/include/bits/sanboot.h b/src/arch/x86_64/include/bits/sanboot.h
deleted file mode 100644
index dcab830f6..000000000
--- a/src/arch/x86_64/include/bits/sanboot.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _BITS_SANBOOT_H
-#define _BITS_SANBOOT_H
-
-/** @file
- *
- * x86_64-specific sanboot API implementations
- *
- */
-
-FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
-#endif /* _BITS_SANBOOT_H */
diff --git a/src/arch/x86_64/include/bits/smbios.h b/src/arch/x86_64/include/bits/smbios.h
deleted file mode 100644
index 2f0118d02..000000000
--- a/src/arch/x86_64/include/bits/smbios.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _BITS_SMBIOS_H
-#define _BITS_SMBIOS_H
-
-/** @file
- *
- * i386-specific SMBIOS API implementations
- *
- */
-
-#endif /* _BITS_SMBIOS_H */
diff --git a/src/arch/x86_64/include/bits/time.h b/src/arch/x86_64/include/bits/time.h
deleted file mode 100644
index aa74fac8c..000000000
--- a/src/arch/x86_64/include/bits/time.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef _BITS_TIME_H
-#define _BITS_TIME_H
-
-/** @file
- *
- * x86_64-specific time API implementations
- *
- */
-
-FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
-#endif /* _BITS_TIME_H */
diff --git a/src/arch/x86_64/include/bits/timer.h b/src/arch/x86_64/include/bits/timer.h
deleted file mode 100644
index dfa6c270c..000000000
--- a/src/arch/x86_64/include/bits/timer.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _BITS_TIMER_H
-#define _BITS_TIMER_H
-
-/** @file
- *
- * x86_64-specific timer API implementations
- *
- */
-
-#endif /* _BITS_TIMER_H */
diff --git a/src/arch/x86_64/include/bits/uaccess.h b/src/arch/x86_64/include/bits/uaccess.h
deleted file mode 100644
index 455829242..000000000
--- a/src/arch/x86_64/include/bits/uaccess.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _BITS_UACCESS_H
-#define _BITS_UACCESS_H
-
-/** @file
- *
- * x86_64-specific user access API implementations
- *
- */
-
-#endif /* _BITS_UACCESS_H */
diff --git a/src/arch/x86_64/include/bits/umalloc.h b/src/arch/x86_64/include/bits/umalloc.h
deleted file mode 100644
index 12bf949d1..000000000
--- a/src/arch/x86_64/include/bits/umalloc.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef _BITS_UMALLOC_H
-#define _BITS_UMALLOC_H
-
-/** @file
- *
- * x86_64-specific user memory allocation API implementations
- *
- */
-
-#endif /* _BITS_UMALLOC_H */
diff --git a/src/arch/x86_64/include/pcbios/ipxe/dhcp_arch.h b/src/arch/x86_64/include/pcbios/ipxe/dhcp_arch.h
new file mode 100644
index 000000000..e07e4c192
--- /dev/null
+++ b/src/arch/x86_64/include/pcbios/ipxe/dhcp_arch.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2010 VMware, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * You can also choose to distribute this program under the terms of
+ * the Unmodified Binary Distribution Licence (as given in the file
+ * COPYING.UBDL), provided that you have satisfied its requirements.
+ */
+
+#ifndef _DHCP_ARCH_H
+#define _DHCP_ARCH_H
+
+/** @file
+ *
+ * Architecture-specific DHCP options
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+
+#include <ipxe/dhcp.h>
+
+#define DHCP_ARCH_VENDOR_CLASS_ID \
+ DHCP_STRING ( 'P', 'X', 'E', 'C', 'l', 'i', 'e', 'n', 't', ':', \
+ 'A', 'r', 'c', 'h', ':', '0', '0', '0', '0', '0', ':', \
+ 'U', 'N', 'D', 'I', ':', '0', '0', '2', '0', '0', '1' )
+
+#define DHCP_ARCH_CLIENT_ARCHITECTURE \
+ DHCP_WORD ( DHCP_CLIENT_ARCHITECTURE_X86 )
+
+#define DHCP_ARCH_CLIENT_NDI DHCP_OPTION ( 1 /* UNDI */ , 2, 1 /* v2.1 */ )
+
+#endif