summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/ti/am335x/Makefile.inc12
-rw-r--r--src/cpu/ti/am335x/header.c5
2 files changed, 14 insertions, 3 deletions
diff --git a/src/cpu/ti/am335x/Makefile.inc b/src/cpu/ti/am335x/Makefile.inc
index c1bbcf6ce7..7dcdf0f77a 100644
--- a/src/cpu/ti/am335x/Makefile.inc
+++ b/src/cpu/ti/am335x/Makefile.inc
@@ -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
diff --git a/src/cpu/ti/am335x/header.c b/src/cpu/ti/am335x/header.c
index bd2f344fd4..5ed943edeb 100644
--- a/src/cpu/ti/am335x/header.c
+++ b/src/cpu/ti/am335x/header.c
@@ -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
}
};