Add optional support for USB to BERI loader. Fix the linker script so

that the garbage collection feature can be used when linking.

Sponsored by:	DARPA, AFRL
This commit is contained in:
Hans Petter Selasky 2014-05-30 16:47:54 +00:00
parent 4be86ee126
commit b589760a6f
3 changed files with 27 additions and 4 deletions

View File

@ -136,6 +136,17 @@ FILES+= loader.rc
FILES+= menu.rc
.endif
.if defined(LOADER_USB_SUPPORT)
# Do garbage collection
CFLAGS+= -ffunction-sections -fdata-sections
CFLAGS+= -Wl,--gc-sections
# Link USB BOOT library
LDADD+= ${.OBJDIR}/../../../usb/libusbboot.a
CFLAGS+= -I${.CURDIR}/../../../usb
# Define USB SUPPORT
CFLAGS+= -DLOADER_USB_SUPPORT
.endif
all: loader
.include <bsd.prog.mk>

View File

@ -58,11 +58,16 @@ SECTIONS
. += SIZEOF_HEADERS;
.text ALIGN(0x8): {
start.o(.text)
*(EXCLUDE_FILE (start.o) .text)
start.o(.text*)
*(EXCLUDE_FILE (start.o) .text*)
*(.rodata*)
__start_set_Xcommand_set = .;
KEEP(*(set_Xcommand_set))
__stop_set_Xcommand_set = .;
}
.data ALIGN(0x8): { *(.data)}
.bss ALIGN(0x8): { *(.bss) }
.data ALIGN(0x8): { *(.data*)}
.bss ALIGN(0x8): { *(.bss*) }
__heap = ALIGN(0x8); /* 64-bit aligned heap pointer */
__data_end = .;

View File

@ -43,12 +43,19 @@ __FBSDID("$FreeBSD$");
#include <loader.h>
#include <mips.h>
#ifdef LOADER_USB_SUPPORT
#include <storage/umass_common.h>
#endif
static int __elfN(exec)(struct preloaded_file *);
static void extract_currdev(struct bootinfo *);
struct devsw *devsw[] = {
&beri_cfi_disk,
&beri_sdcard_disk,
#ifdef LOADER_USB_SUPPORT
&umass_disk,
#endif
NULL
};