summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib_ppc/board.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 45d1328f21..fbf1c5d25a 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -361,6 +361,20 @@ init_fnc_t *init_sequence[] = {
NULL, /* Terminate this list */
};
+#ifndef CONFIG_MAX_MEM_MAPPED
+#define CONFIG_MAX_MEM_MAPPED (256 << 20)
+#endif
+ulong get_effective_memsize(void)
+{
+#ifndef CONFIG_VERY_BIG_RAM
+ return gd->ram_size;
+#else
+ /* limit stack to what we can reasonable map */
+ return ((gd->ram_size > CONFIG_MAX_MEM_MAPPED) ?
+ CONFIG_MAX_MEM_MAPPED : gd->ram_size);
+#endif
+}
+
/************************************************************************
*
* This is the first part of the initialization sequence that is
@@ -419,13 +433,7 @@ void board_init_f (ulong bootflag)
*/
len = (ulong)&_end - CFG_MONITOR_BASE;
-#ifndef CONFIG_VERY_BIG_RAM
- addr = CFG_SDRAM_BASE + gd->ram_size;
-#else
- /* only allow stack below 256M */
- addr = CFG_SDRAM_BASE +
- (gd->ram_size > 256 << 20) ? 256 << 20 : gd->ram_size;
-#endif
+ addr = CFG_SDRAM_BASE + get_effective_memsize();
#ifdef CONFIG_LOGBUFFER
/* reserve kernel log buffer */
OpenPOWER on IntegriCloud