summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorDavid Hendricks <dhendrix@chromium.org>2013-01-14 20:58:50 -0800
committerRonald G. Minnich <rminnich@gmail.com>2013-01-17 01:06:43 +0100
commit0b23d47ffd1c87cb41df9e3e1b73cdfddd425dcd (patch)
tree3d633d92379b0464663a94462e4d027b0d3ecfa7 /src/arch
parent3d7344a7a1fcf09406460da59b61baff564bbbd3 (diff)
downloadcoreboot-0b23d47ffd1c87cb41df9e3e1b73cdfddd425dcd.tar.xz
armv7: Place reset vector + CBFS header + bootblock dynamically
This replaces hard-coded bootblock offsets using the new scheme. The assembler will place the initial branch instruction after BL1, skip 2 aligned chunks, and place the remaining bootblock code after. It will also leave an anchor string, currently 0xdeadbeef which cbfstool will find. Once found, cbfstool will place the master CBFS header at the next aligned offset. Here is how it looks: 0x0000 |--------------| | BL1 | 0x2000 |--------------| | branch | 0x2000 + align |--------------| | CBFS header | 0x2000 + align * 2 |--------------| | bootblock | |--------------| TODO: The option for alignment passed into cbfstool has always been 64. Can we set it to 16 instead? Change-Id: Icbe817cbd8a37f11990aaf060aab77d2dc113cb1 Signed-off-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: http://review.coreboot.org/2148 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/armv7/Makefile.inc3
-rw-r--r--src/arch/armv7/bootblock.inc8
2 files changed, 5 insertions, 6 deletions
diff --git a/src/arch/armv7/Makefile.inc b/src/arch/armv7/Makefile.inc
index a4f57f34c1..cc306335cd 100644
--- a/src/arch/armv7/Makefile.inc
+++ b/src/arch/armv7/Makefile.inc
@@ -48,8 +48,7 @@ prebuilt-files = $(foreach file,$(cbfs-files), $(call extract_nth,1,$(file)))
$(obj)/coreboot.pre1: $(objcbfs)/bootblock.bin $$(prebuilt-files) $(CBFSTOOL)
$(CBFSTOOL) $@.tmp create -m armv7 -s $(CONFIG_COREBOOT_ROMSIZE_KB)K \
- -B $(objcbfs)/bootblock.bin -a 64 \
- -o $$(( $(CONFIG_ROM_SIZE) - $(CONFIG_CBFS_SIZE) ))
+ -B $(objcbfs)/bootblock.bin -a 64
$(prebuild-files) true
mv $@.tmp $@
else
diff --git a/src/arch/armv7/bootblock.inc b/src/arch/armv7/bootblock.inc
index 90850d62dd..e1b8b19341 100644
--- a/src/arch/armv7/bootblock.inc
+++ b/src/arch/armv7/bootblock.inc
@@ -43,11 +43,11 @@ _start: b reset
.balignl 16,0xdeadbeef
_cbfs_master_header:
- /* The CBFS master header is inserted here by cbfstool
- * when coreboot.rom is being created. Hence, we leave
- * some space for it.
+ /* The CBFS master header is inserted by cbfstool at the first
+ * aligned offset after the above anchor string is found.
+ * Hence, we leave some space for it.
*/
- .skip 64
+ .skip 128 @ Assumes 64-byte alignment
reset:
/*