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:
parent
e2851f2812
commit
1c706dc858
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue