summaryrefslogtreecommitdiff
path: root/src/arch/armv7
diff options
context:
space:
mode:
authorDavid Hendricks <dhendrix@chromium.org>2013-02-14 16:41:54 -0800
committerDavid Hendricks <dhendrix@chromium.org>2013-02-16 00:39:01 +0100
commit882fdcf2271d385f1110c0f3737ceeb5e30d2861 (patch)
treefc01a3aeb727b51e4cabdb4bed5fb2e96a868a70 /src/arch/armv7
parent1cf46a7bbf7881275ea74520e9e926abe18e5ffe (diff)
armv7/exynos5250: fix usage of _stack and _estack
This patch fixes up the usage of stack pointer and regions. The current approach only works by coincidence, so this fixes a few things at once to get it into a working state and allow us to use checkstack() again: - Add a STACK_SIZE Kconfig variable. Earlier on it was evaluated to 0. - Assign _stack and _estack using CPU-specific Kconfig variables since it may reside elsewhere in memory (not necessarily DRAM). - Make the existing IRAM stack variables more useful in this context. Change-Id: I4ca5b5680c9ea7e26b1b2b6b3890e028188b51c2 Signed-off-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: http://review.coreboot.org/2416 Reviewed-by: Ronald G. Minnich <rminnich@gmail.com> Tested-by: build bot (Jenkins)
Diffstat (limited to 'src/arch/armv7')
-rw-r--r--src/arch/armv7/bootblock.inc2
-rw-r--r--src/arch/armv7/coreboot_ram.ld12
2 files changed, 4 insertions, 10 deletions
diff --git a/src/arch/armv7/bootblock.inc b/src/arch/armv7/bootblock.inc
index efe3d67bd1..c8cfe5eb37 100644
--- a/src/arch/armv7/bootblock.inc
+++ b/src/arch/armv7/bootblock.inc
@@ -94,4 +94,4 @@ wait_for_interrupt:
*/
.align 2
.Stack:
- .word CONFIG_IRAM_STACK
+ .word CONFIG_STACK_TOP
diff --git a/src/arch/armv7/coreboot_ram.ld b/src/arch/armv7/coreboot_ram.ld
index 0644e3669d..2edf8e3b26 100644
--- a/src/arch/armv7/coreboot_ram.ld
+++ b/src/arch/armv7/coreboot_ram.ld
@@ -99,15 +99,6 @@ SECTIONS
* this line.
*/
- . = ALIGN(CONFIG_STACK_SIZE);
-
- _stack = .;
- .stack . : {
- /* Reserve a stack for each possible cpu */
- . += CONFIG_MAX_CPUS*CONFIG_STACK_SIZE;
- }
- _estack = .;
-
_heap = .;
.heap . : {
/* Reserve CONFIG_HEAP_SIZE bytes for the heap */
@@ -116,6 +107,9 @@ SECTIONS
}
_eheap = .;
+ _stack = CONFIG_STACK_BOTTOM;
+ _estack = CONFIG_STACK_TOP;
+
/* The ram segment. This includes all memory used by the memory
* resident copy of coreboot, except the tables that are produced on
* the fly, but including stack and heap.