diff options
Diffstat (limited to 'common')
| -rw-r--r-- | common/cmd_bootm.c | 10 | ||||
| -rw-r--r-- | common/image.c | 26 | 
2 files changed, 31 insertions, 5 deletions
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index a32a5a256..8595ef688 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -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); diff --git a/common/image.c b/common/image.c index 0b718119f..9e446faa7 100644 --- a/common/image.c +++ b/common/image.c @@ -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)  |