[new uImage] Provide ability to restrict region used for boot images

Allow the user to set 'bootm_low' and 'bootm_size' env vars as a way
to restrict what memory range is used for bootm.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Acked-by: Marian Balakowicz <m8@semihalf.com>
This commit is contained in:
Kumar Gala
2008-02-27 21:51:50 -06:00
committed by Marian Balakowicz
parent e822d7fc4d
commit d3f2fa0d27
5 changed files with 60 additions and 8 deletions

View File

@@ -124,6 +124,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
ulong os_data, os_len;
ulong image_start, image_end;
ulong load_start, load_end;
ulong mem_start, mem_size;
struct lmb lmb;
@@ -134,11 +135,10 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
lmb_init(&lmb);
#ifdef CFG_SDRAM_BASE
lmb_add(&lmb, CFG_SDRAM_BASE, gd->bd->bi_memsize);
#else
lmb_add(&lmb, 0, gd->bd->bi_memsize);
#endif
mem_start = getenv_bootm_low();
mem_size = getenv_bootm_size();
lmb_add(&lmb, mem_start, mem_size);
board_lmb_reserve(&lmb);

View File

@@ -132,6 +132,32 @@ int getenv_autostart (void)
return (s && (*s == 'n')) ? 0 : 1;
}
ulong getenv_bootm_low(void)
{
char *s = getenv ("bootm_low");
if (s) {
ulong tmp = simple_strtoul (s, NULL, 16);
return tmp;
}
#ifdef CFG_SDRAM_BASE
return CFG_SDRAM_BASE;
#else
return 0;
#endif
}
ulong getenv_bootm_size(void)
{
char *s = getenv ("bootm_size");
if (s) {
ulong tmp = simple_strtoul (s, NULL, 16);
return tmp;
}
return gd->bd->bi_memsize;
}
void memmove_wd (void *to, void *from, size_t len, ulong chunksz)
{
#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)