diff options
| author | Simon Glass <sjg@chromium.org> | 2013-05-16 13:53:24 +0000 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2013-06-04 16:06:31 -0400 | 
| commit | aed161e5fe86e75e732f22ba1f82711d8d257c5a (patch) | |
| tree | c7454cebc9e561468d91795624cbfbc60a3d7f87 /common/cmd_bootm.c | |
| parent | 53f375fa819c656eec32ac779456a612836ae006 (diff) | |
| download | olio-uboot-2014.01-aed161e5fe86e75e732f22ba1f82711d8d257c5a.tar.xz olio-uboot-2014.01-aed161e5fe86e75e732f22ba1f82711d8d257c5a.zip | |
sandbox: Adjust bootm command to work with sandbox
Use map_sysmem() when converting from addresses to pointers, so that
bootm can be used with sandbox.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common/cmd_bootm.c')
| -rw-r--r-- | common/cmd_bootm.c | 25 | 
1 files changed, 12 insertions, 13 deletions
| diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index d2b5cce51..b09f35bb9 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -336,12 +336,15 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)  	ulong image_len = os.image_len;  	__maybe_unused uint unc_len = CONFIG_SYS_BOOTM_LEN;  	int no_overlap = 0; +	void *load_buf, *image_buf;  #if defined(CONFIG_LZMA) || defined(CONFIG_LZO)  	int ret;  #endif /* defined(CONFIG_LZMA) || defined(CONFIG_LZO) */  	const char *type_name = genimg_get_type_name(os.type); +	load_buf = map_sysmem(load, image_len); +	image_buf = map_sysmem(image_start, image_len);  	switch (comp) {  	case IH_COMP_NONE:  		if (load == blob_start || load == image_start) { @@ -349,8 +352,7 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)  			no_overlap = 1;  		} else {  			printf("   Loading %s ... ", type_name); -			memmove_wd((void *)load, (void *)image_start, -					image_len, CHUNKSZ); +			memmove_wd(load_buf, image_buf, image_len, CHUNKSZ);  		}  		*load_end = load + image_len;  		puts("OK\n"); @@ -358,8 +360,7 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)  #ifdef CONFIG_GZIP  	case IH_COMP_GZIP:  		printf("   Uncompressing %s ... ", type_name); -		if (gunzip((void *)load, unc_len, -				(uchar *)image_start, &image_len) != 0) { +		if (gunzip(load_buf, unc_len, image_buf, &image_len) != 0) {  			puts("GUNZIP: uncompress, out-of-mem or overwrite "  				"error - must RESET board to recover\n");  			if (boot_progress) @@ -378,9 +379,9 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)  		 * use slower decompression algorithm which requires  		 * at most 2300 KB of memory.  		 */ -		int i = BZ2_bzBuffToBuffDecompress((char *)load, -					&unc_len, (char *)image_start, image_len, -					CONFIG_SYS_MALLOC_LEN < (4096 * 1024), 0); +		int i = BZ2_bzBuffToBuffDecompress(load_buf, &unc_len, +			image_buf, image_len, +			CONFIG_SYS_MALLOC_LEN < (4096 * 1024), 0);  		if (i != BZ_OK) {  			printf("BUNZIP2: uncompress or overwrite error %d "  				"- must RESET board to recover\n", i); @@ -397,9 +398,8 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)  		SizeT lzma_len = unc_len;  		printf("   Uncompressing %s ... ", type_name); -		ret = lzmaBuffToBuffDecompress( -			(unsigned char *)load, &lzma_len, -			(unsigned char *)image_start, image_len); +		ret = lzmaBuffToBuffDecompress(load_buf, &lzma_len, +					       image_buf, image_len);  		unc_len = lzma_len;  		if (ret != SZ_OK) {  			printf("LZMA: uncompress or overwrite error %d " @@ -415,9 +415,8 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress)  	case IH_COMP_LZO:  		printf("   Uncompressing %s ... ", type_name); -		ret = lzop_decompress((const unsigned char *)image_start, -					  image_len, (unsigned char *)load, -					  &unc_len); +		ret = lzop_decompress(image_buf, image_len, load_buf, +				      &unc_len);  		if (ret != LZO_E_OK) {  			printf("LZO: uncompress or overwrite error %d "  			      "- must RESET board to recover\n", ret); |