aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Hendricks <dhendrix@chromium.org>2013-02-15 17:50:20 -0800
committerDavid Hendricks <dhendrix@chromium.org>2013-02-19 00:57:41 +0100
commitb313e90162fcc305178d26408533b183ce045965 (patch)
treee32f999c9adf87acb0449e0830dd2216e5c381ed /src
parent384ee9f1429db8543724e868b7ffd5fc7e2aa915 (diff)
armv7: init stack to 0xdeadbeef to detect stack overflows
This adds a simple loop which initializes the stack to 0xdeadbeef which is used by checkstack(). Change-Id: I8aecf7bfb1067de68c4080c1fcb7eefa28fd04a7 Signed-off-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: http://review.coreboot.org/2421 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src')
-rw-r--r--src/arch/armv7/bootblock.inc18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/arch/armv7/bootblock.inc b/src/arch/armv7/bootblock.inc
index c8cfe5eb37..da063a6786 100644
--- a/src/arch/armv7/bootblock.inc
+++ b/src/arch/armv7/bootblock.inc
@@ -71,6 +71,21 @@ reset:
cmp r1, #0
bne wait_for_interrupt @ If this is not core0, wait
+ /*
+ * Initialize the stack to a known value. This is used to check for
+ * stack overflow later in the boot process.
+ */
+ ldr r0, .Stack
+ ldr r1, .Stack_size
+ sub r0, r0, r1
+ ldr r1, .Stack
+ ldr r2, =0xdeadbeef
+init_stack_loop:
+ str r2, [r0]
+ add r0, #4
+ cmp r0, r1
+ bne init_stack_loop
+
/* Set stackpointer in internal RAM to call board_init_f */
call_bootblock:
ldr sp, .Stack /* Set up stack pointer */
@@ -95,3 +110,6 @@ wait_for_interrupt:
.align 2
.Stack:
.word CONFIG_STACK_TOP
+.align 2
+.Stack_size:
+ .word CONFIG_STACK_SIZE