summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzbao <fishbaozi@gmail.com>2012-02-17 21:44:09 +0800
committerMarc Jones <marcj303@gmail.com>2012-02-17 17:45:23 +0100
commit93dd07f3d5ee1726b79e26644ff245fe8b5aaef7 (patch)
tree60271c020933d285bef223c2a057f2d9ffafb753
parent6d6d18efe859875c5fc35cabb5e977fe6841c771 (diff)
downloadcoreboot-93dd07f3d5ee1726b79e26644ff245fe8b5aaef7.tar.xz
Exit building if romstage.bin is larger than size of XIP
When the romstage.bin becomes bigger than the size of XIP, the cbfstool can not allocate the romstage in the CBFS. But it doesn't report an error. It will take quite a while to find out the root cause. Change-Id: I5be2a46a8b57934f14c5a0d4596f3bec4251e0aa Signed-off-by: Zheng Bao <zheng.bao@amd.com> Signed-off-by: zbao <fishbaozi@gmail.com> Reviewed-on: http://review.coreboot.org/650 Reviewed-by: Patrick Georgi <patrick@georgi-clan.de> Tested-by: build bot (Jenkins) Reviewed-by: Marc Jones <marcj303@gmail.com>
-rwxr-xr-xsrc/arch/x86/Makefile.inc2
-rw-r--r--util/cbfstool/cbfstool.c5
2 files changed, 4 insertions, 3 deletions
diff --git a/src/arch/x86/Makefile.inc b/src/arch/x86/Makefile.inc
index c9cbb01b4a..624b5104d0 100755
--- a/src/arch/x86/Makefile.inc
+++ b/src/arch/x86/Makefile.inc
@@ -346,7 +346,7 @@ $(obj)/coreboot.romstage: $(obj)/coreboot.pre1 $$(romstage-objs) $(obj)/romstage
$(CC) -nostdlib -nostartfiles -static -o $(obj)/romstage.elf -L$(obj) -T $(obj)/romstage/ldscript.ld $(romstage-objs)
$(OBJCOPY) -O binary $(obj)/romstage.elf $(obj)/romstage.bin
printf "CONFIG_ROMBASE = 0x" > $(obj)/location.ld
- $(CBFSTOOL) $(obj)/coreboot.pre1 locate $(obj)/romstage.bin $(CONFIG_CBFS_PREFIX)/romstage $(CONFIG_XIP_ROM_SIZE) > $(obj)/location.txt
+ $(CBFSTOOL) $(obj)/coreboot.pre1 locate $(obj)/romstage.bin $(CONFIG_CBFS_PREFIX)/romstage $(CONFIG_XIP_ROM_SIZE) > $(obj)/location.txt || { echo "The romstage is larger than XIP size. Please expand the CONFIG_XIP_ROM_SIZE" ; exit 1; }
cat $(obj)/location.txt >> $(obj)/location.ld
printf ';\n' >> $(obj)/location.ld
$(CC) -nostdlib -nostartfiles -static -o $(obj)/romstage.elf -L$(obj) -T $(obj)/romstage/ldscript.ld $(romstage-objs)
diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c
index b8abb515bf..939221e66d 100644
--- a/util/cbfstool/cbfstool.c
+++ b/util/cbfstool/cbfstool.c
@@ -232,9 +232,10 @@ static int cbfs_locate(int argc, char **argv)
uint32_t filesize = getfilesize(file);
const char *filename = argv[4];
int align = strtoul(argv[5], NULL, 0);
+ uint32_t location = cbfs_find_location(romname, filesize, filename, align);
- printf("%x\n", cbfs_find_location(romname, filesize, filename, align));
- return 0;
+ printf("%x\n", location);
+ return location == 0 ? 1 : 0;
}
static int cbfs_print(int argc, char **argv)