David Hendricks ([email protected]) just uploaded a new patch set to 
gerrit, which you can find at http://review.coreboot.org/2421

-gerrit

commit 3431a9c39c8d3fab3b7f94a085545fa79251accf
Author: David Hendricks <[email protected]>
Date:   Fri Feb 15 17:50:20 2013 -0800

    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 <[email protected]>
---
 src/arch/armv7/bootblock.inc | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/arch/armv7/bootblock.inc b/src/arch/armv7/bootblock.inc
index c8cfe5e..da063a6 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

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to