ppc: Allow boards to specify effective amount of memory
authorKumar Gala <galak@kernel.crashing.org>
Mon, 18 Feb 2008 14:09:37 +0000 (08:09 -0600)
committerWolfgang Denk <wd@denx.de>
Fri, 22 Feb 2008 11:35:53 +0000 (12:35 +0100)
For historical reasons we limited the stack to 256M because some boards
could only map that much via BATS.  However newer boards are capable of
mapping more memory (for example 85xx is capable of doing up to 2G).

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
lib_ppc/board.c

index 45d1328f21ef71fa782b4c2b48a34731ea731b38..fbf1c5d25ab7de8db01058d66bcdf91771e42e1d 100644 (file)
@@ -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 */