diff options
| -rw-r--r-- | common/cmd_bootm.c | 10 | ||||
| -rw-r--r-- | common/image.c | 1 | ||||
| -rw-r--r-- | include/image.h | 1 | ||||
| -rw-r--r-- | tools/default_image.c | 3 | 
4 files changed, 13 insertions, 2 deletions
| diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index b073f095b..8cafe3e67 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -272,7 +272,13 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]  		return 1;  	} +	if (images.os.type == IH_TYPE_KERNEL_NOLOAD) { +		images.os.load = images.os.image_start; +		images.ep += images.os.load; +	} +  	if (((images.os.type == IH_TYPE_KERNEL) || +	     (images.os.type == IH_TYPE_KERNEL_NOLOAD) ||  	     (images.os.type == IH_TYPE_MULTI)) &&  	    (images.os.os == IH_OS_LINUX)) {  		/* find ramdisk */ @@ -796,7 +802,8 @@ static int fit_check_kernel(const void *fit, int os_noffset, int verify)  	}  	show_boot_progress(106); -	if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL)) { +	if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL) && +	    !fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL_NOLOAD)) {  		puts("Not a kernel image\n");  		show_boot_progress(-106);  		return 0; @@ -874,6 +881,7 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,  		/* get os_data and os_len */  		switch (image_get_type(hdr)) {  		case IH_TYPE_KERNEL: +		case IH_TYPE_KERNEL_NOLOAD:  			*os_data = image_get_data(hdr);  			*os_len = image_get_data_size(hdr);  			break; diff --git a/common/image.c b/common/image.c index 555d9d9d4..aacae5ac5 100644 --- a/common/image.c +++ b/common/image.c @@ -136,6 +136,7 @@ static const table_entry_t uimage_type[] = {  	{	IH_TYPE_FIRMWARE,   "firmware",	  "Firmware",		},  	{	IH_TYPE_FLATDT,     "flat_dt",    "Flat Device Tree",	},  	{	IH_TYPE_KERNEL,	    "kernel",	  "Kernel Image",	}, +	{	IH_TYPE_KERNEL_NOLOAD, "kernel_noload",  "Kernel Image (no loading done)", },  	{	IH_TYPE_KWBIMAGE,   "kwbimage",   "Kirkwood Boot Image",},  	{	IH_TYPE_IMXIMAGE,   "imximage",   "Freescale i.MX Boot Image",},  	{	IH_TYPE_INVALID,    NULL,	  "Invalid Image",	}, diff --git a/include/image.h b/include/image.h index 6a41c2e34..466c98018 100644 --- a/include/image.h +++ b/include/image.h @@ -162,6 +162,7 @@  #define IH_TYPE_UBLIMAGE	11	/* Davinci UBL Image		*/  #define IH_TYPE_OMAPIMAGE	12	/* TI OMAP Config Header Image	*/  #define IH_TYPE_AISIMAGE	13	/* TI Davinci AIS Image		*/ +#define IH_TYPE_KERNEL_NOLOAD	14	/* OS Kernel Image, can run from any load address */  /*   * Compression Types diff --git a/tools/default_image.c b/tools/default_image.c index 6ea3b462c..e9d072975 100644 --- a/tools/default_image.c +++ b/tools/default_image.c @@ -35,7 +35,8 @@ static image_header_t header;  static int image_check_image_types(uint8_t type)  { -	if ((type > IH_TYPE_INVALID) && (type < IH_TYPE_FLATDT)) +	if (((type > IH_TYPE_INVALID) && (type < IH_TYPE_FLATDT)) || +	    (type == IH_TYPE_KERNEL_NOLOAD))  		return EXIT_SUCCESS;  	else  		return EXIT_FAILURE; |