am335x: Make the iROM load only the bootblock and ROM stage.

The bootblock and ROM stages are the only ones that are really required to be
loaded in the quite limited on chip RAM during startup. Rather than load the
whole image which requires everything to be small, load just the bootblock and
the ROM stage, allowing the rest of the image to be arbitrarily large. Loading
a minimal amount of stuff should also improve boot performance a little bit.

Change-Id: I2fede63b8d3d8f0d880e4a692ae423021f8232b6
Signed-off-by: Gabe Black <gabeblack@chromium.org>
Reviewed-on: http://review.coreboot.org/3421
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
Gabe Black 2013-06-10 02:07:17 -04:00 committed by Ronald G. Minnich
parent 437a1e67a3
commit 1ef5ff2770
2 changed files with 14 additions and 3 deletions

View File

@ -17,9 +17,17 @@ real-target: $(obj)/MLO
header_ld = $(src)/cpu/ti/am335x/header.ld
$(obj)/omap-header.bin: $$(omap-header-objs) $$(header_ld)
get_header_size=$(shell $(CBFSTOOL) $(1) print | grep $(2) | awk '{print $$2 + $$4}')
$(obj)/omap-header.bin: $$(omap-header-objs) $$(header_ld) $(obj)/coreboot.rom
@printf " CC $(subst $(obj)/,,$(@))\n"
$(CC) -nostdlib -nostartfiles -static -include $(obj)/config.h -o $@.tmp $< -T $(header_ld)
$(CC) -nostdlib -nostartfiles -static -include $(obj)/config.h \
-Wl,--defsym,header_load_size=$(strip \
$(call get_header_size,$(obj)/coreboot.rom, \
$(CONFIG_CBFS_PREFIX)/romstage \
) \
) \
-o $@.tmp $< -T $(header_ld)
$(OBJCOPY) --only-section=".header" -O binary $@.tmp $@
$(obj)/MLO: $(obj)/coreboot.rom $(obj)/omap-header.bin

View File

@ -40,6 +40,9 @@ struct omap_image_headers {
struct gp_device_header image_header;
};
// A symbol which defines how much of the image the iROM should load.
extern char header_load_size;
struct omap_image_headers headers __attribute__((section(".header"))) = {
.config_headers = {
.toc_chsettings = {
@ -66,7 +69,7 @@ struct omap_image_headers headers __attribute__((section(".header"))) = {
}
},
.image_header = {
.size = CONFIG_ROM_SIZE,
.size = (uintptr_t)&header_load_size,
.destination = CONFIG_BOOTBLOCK_BASE
}
};