summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorRonald G. Minnich <rminnich@gmail.com>2013-01-17 11:14:17 -0800
committerDavid Hendricks <dhendrix@chromium.org>2013-01-17 21:36:59 +0100
commit1c706dc85830a1d91c7ff7c99ac48efd8d085613 (patch)
treec5c30a8c98e0c5413ef83676916cfc77aae135ec /src/arch
parente2851f2812ddf39b362e2abba76eeec0cd705dee (diff)
downloadcoreboot-1c706dc85830a1d91c7ff7c99ac48efd8d085613.tar.xz
Fix the stack setup code so we can use an arbitrary 32-bit value
We've had obscure errors as the size of the bootblock changes. This fix allows us to use a 32-bit constant. Please test on real hardware before you ack. Change-Id: Ic3d9f4763554bd6104ae9c4ce5bbacd17b40872c Signed-off-by: Ronald G. Minnich <rminnich@gmail.com> Reviewed-on: http://review.coreboot.org/2168 Reviewed-by: David Hendricks <dhendrix@chromium.org> Tested-by: build bot (Jenkins)
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/armv7/bootblock.inc10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/arch/armv7/bootblock.inc b/src/arch/armv7/bootblock.inc
index e1b8b19341..4fe7502681 100644
--- a/src/arch/armv7/bootblock.inc
+++ b/src/arch/armv7/bootblock.inc
@@ -71,7 +71,7 @@ reset:
/* Set stackpointer in internal RAM to call board_init_f */
call_bootblock:
- ldr sp, =(CONFIG_SYS_INIT_SP_ADDR) /* Set up stack pointer */
+ ldr sp, .Stack /* Set up stack pointer */
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
ldr r0,=0x00000000
/*
@@ -85,3 +85,11 @@ call_bootblock:
wait_for_interrupt:
wfi
mov pc, lr @ back to my caller
+
+/* we do it this way because it's a 32-bit constant and
+ * in some cases too far away to be loaded as just an offset
+ * from IP
+ */
+.align 2
+.Stack:
+ .word CONFIG_SYS_INIT_SP_ADDR