@ -643,6 +643,49 @@ int genimg_get_comp_id(const char *name)
# ifndef USE_HOSTCC
/**
* genimg_get_kernel_addr - get the real kernel address
* @ img_addr : a string might contain real image address
*
* genimg_get_kernel_addr ( ) get the real kernel start address from a string
* which is normally the first argv of bootm / bootz
*
* returns :
* kernel start address
*/
ulong genimg_get_kernel_addr ( char * const img_addr )
{
# if defined(CONFIG_FIT)
const char * fit_uname_config = NULL ;
const char * fit_uname_kernel = NULL ;
# endif
ulong kernel_addr ;
/* find out kernel image address */
if ( ! img_addr ) {
kernel_addr = load_addr ;
debug ( " * kernel: default image load address = 0x%08lx \n " ,
load_addr ) ;
# if defined(CONFIG_FIT)
} else if ( fit_parse_conf ( img_addr , load_addr , & kernel_addr ,
& fit_uname_config ) ) {
debug ( " * kernel: config '%s' from image at 0x%08lx \n " ,
fit_uname_config , kernel_addr ) ;
} else if ( fit_parse_subimage ( img_addr , load_addr , & kernel_addr ,
& fit_uname_kernel ) ) {
debug ( " * kernel: subimage '%s' from image at 0x%08lx \n " ,
fit_uname_kernel , kernel_addr ) ;
# endif
} else {
kernel_addr = simple_strtoul ( img_addr , NULL , 16 ) ;
debug ( " * kernel: cmdline image address = 0x%08lx \n " ,
kernel_addr ) ;
}
return kernel_addr ;
}
/**
* genimg_get_format - get image format type
* @ img_addr : image start address
*