summaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorMichael Brown2016-03-12 22:47:13 +0100
committerMichael Brown2016-03-12 22:47:13 +0100
commita8037ee131a9501ddfc89ce157e3718b1a3b86a7 (patch)
tree918210dd467c16d5778a9ebd229d5060957a3ce5 /src/arch
parent[tg3] Remove x86-specific inline assembly (diff)
downloadipxe-a8037ee131a9501ddfc89ce157e3718b1a3b86a7.tar.gz
ipxe-a8037ee131a9501ddfc89ce157e3718b1a3b86a7.tar.xz
ipxe-a8037ee131a9501ddfc89ce157e3718b1a3b86a7.zip
[efi] Centralise architecture-independent EFI Makefile and linker script
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/x86/Makefile.efi46
-rw-r--r--src/arch/x86/scripts/efi.lds110
2 files changed, 3 insertions, 153 deletions
diff --git a/src/arch/x86/Makefile.efi b/src/arch/x86/Makefile.efi
index c4bc2308..f04be425 100644
--- a/src/arch/x86/Makefile.efi
+++ b/src/arch/x86/Makefile.efi
@@ -1,46 +1,6 @@
# -*- makefile -*- : Force emacs to use Makefile mode
-# The EFI linker script
+# Include generic EFI Makefile
#
-LDSCRIPT = arch/x86/scripts/efi.lds
-
-# Retain relocation information for elf2efi
-#
-LDFLAGS += -q -S
-
-# Media types.
-#
-NON_AUTO_MEDIA += efi
-NON_AUTO_MEDIA += efidrv
-NON_AUTO_MEDIA += drv.efi
-NON_AUTO_MEDIA += efirom
-
-# Include SNP driver in the all-drivers build
-#
-DRIVERS_net += snp
-
-# Rules for building EFI files
-#
-$(BIN)/%.efi : $(BIN)/%.efi.tmp $(ELF2EFI)
- $(QM)$(ECHO) " [FINISH] $@"
- $(Q)$(ELF2EFI) --subsystem=10 $< $@
-
-$(BIN)/%.efidrv : $(BIN)/%.efidrv.tmp $(ELF2EFI)
- $(QM)$(ECHO) " [FINISH] $@"
- $(Q)$(ELF2EFI) --subsystem=11 $< $@
-
-$(BIN)/%.drv.efi : $(BIN)/%.efidrv
- $(QM)$(ECHO) " [FINISH] $@"
- $(Q)$(CP) $< $@
-
-$(BIN)/%.efirom : $(BIN)/%.efidrv $(EFIROM)
- $(QM)$(ECHO) " [FINISH] $@"
- $(Q)$(EFIROM) -v $(TGT_PCI_VENDOR) -d $(TGT_PCI_DEVICE) $< $@
-
-$(BIN)/efidrv.cab : $(BIN)/alldrv.efis # $(ALL_drv.efi) is not yet defined
- $(QM)$(ECHO) " [CAB] $@"
- $(Q)$(LCAB) -n -q $(ALL_drv.efi) $@
-
-$(BIN)/%.usb : $(BIN)/%.efi
- $(QM)$(ECHO) " [GENEFIDSK] $@"
- $(Q)bash util/genefidsk -o $@ -b $(EFI_BOOT_FILE) $<
+MAKEDEPS += Makefile.efi
+include Makefile.efi
diff --git a/src/arch/x86/scripts/efi.lds b/src/arch/x86/scripts/efi.lds
deleted file mode 100644
index f1049f24..00000000
--- a/src/arch/x86/scripts/efi.lds
+++ /dev/null
@@ -1,110 +0,0 @@
-/* -*- sh -*- */
-
-/*
- * Linker script for EFI images
- *
- */
-
-SECTIONS {
-
- /* The file starts at a virtual address of zero, and sections are
- * contiguous. Each section is aligned to at least _max_align,
- * which defaults to 32. Load addresses are equal to virtual
- * addresses.
- */
-
- _max_align = 32;
-
- /* Allow plenty of space for file headers */
- . = 0x1000;
-
- /*
- * The text section
- *
- */
-
- . = ALIGN ( _max_align );
- .text : {
- _text = .;
- *(.text)
- *(.text.*)
- _etext = .;
- }
-
- /*
- * The rodata section
- *
- */
-
- . = ALIGN ( _max_align );
- .rodata : {
- _rodata = .;
- *(.rodata)
- *(.rodata.*)
- _erodata = .;
- }
-
- /*
- * The data section
- *
- */
-
- . = ALIGN ( _max_align );
- .data : {
- _data = .;
- *(.data)
- *(.data.*)
- KEEP(*(SORT(.tbl.*))) /* Various tables. See include/tables.h */
- KEEP(*(.provided))
- KEEP(*(.provided.*))
- _edata = .;
- }
-
- /*
- * The bss section
- *
- */
-
- . = ALIGN ( _max_align );
- .bss : {
- _bss = .;
- *(.bss)
- *(.bss.*)
- *(COMMON)
- _ebss = .;
- }
-
- /*
- * Weak symbols that need zero values if not otherwise defined
- *
- */
-
- .weak 0x0 : {
- _weak = .;
- *(.weak)
- *(.weak.*)
- _eweak = .;
- }
- _assert = ASSERT ( ( _weak == _eweak ), ".weak is non-zero length" );
-
- /*
- * Dispose of the comment and note sections to make the link map
- * easier to read
- *
- */
-
- /DISCARD/ : {
- *(.comment)
- *(.comment.*)
- *(.note)
- *(.note.*)
- *(.eh_frame)
- *(.eh_frame.*)
- *(.rel)
- *(.rel.*)
- *(.einfo)
- *(.einfo.*)
- *(.discard)
- *(.discard.*)
- }
-}