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)
This commit is contained in:
Ronald G. Minnich 2013-01-17 11:14:17 -08:00 committed by David Hendricks
parent e2851f2812
commit 1c706dc858
1 changed files with 9 additions and 1 deletions

View File

@ -71,7 +71,7 @@ reset:
/* Set stackpointer in internal RAM to call board_init_f */ /* Set stackpointer in internal RAM to call board_init_f */
call_bootblock: 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 */ bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
ldr r0,=0x00000000 ldr r0,=0x00000000
/* /*
@ -85,3 +85,11 @@ call_bootblock:
wait_for_interrupt: wait_for_interrupt:
wfi wfi
mov pc, lr @ back to my caller 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