diff options
Diffstat (limited to 'common/image-fit.c')
| -rw-r--r-- | common/image-fit.c | 19 | 
1 files changed, 18 insertions, 1 deletions
| diff --git a/common/image-fit.c b/common/image-fit.c index 77dc011dc3b..9468e519dbb 100644 --- a/common/image-fit.c +++ b/common/image-fit.c @@ -14,6 +14,7 @@  #include <time.h>  #else  #include <linux/compiler.h> +#include <linux/kconfig.h>  #include <common.h>  #include <errno.h>  #include <mapmem.h> @@ -1161,11 +1162,18 @@ int fit_image_check_os(const void *fit, int noffset, uint8_t os)  int fit_image_check_arch(const void *fit, int noffset, uint8_t arch)  {  	uint8_t image_arch; +	int aarch32_support = 0; + +#ifdef CONFIG_ARM64_SUPPORT_AARCH32 +	aarch32_support = 1; +#endif  	if (fit_image_get_arch(fit, noffset, &image_arch))  		return 0;  	return (arch == image_arch) || -		(arch == IH_ARCH_I386 && image_arch == IH_ARCH_X86_64); +		(arch == IH_ARCH_I386 && image_arch == IH_ARCH_X86_64) || +		(arch == IH_ARCH_ARM64 && image_arch == IH_ARCH_ARM && +		 aarch32_support);  }  /** @@ -1614,6 +1622,9 @@ int fit_image_load(bootm_headers_t *images, ulong addr,  	int type_ok, os_ok;  	ulong load, data, len;  	uint8_t os; +#ifndef USE_HOSTCC +	uint8_t os_arch; +#endif  	const char *prop_name;  	int ret; @@ -1697,6 +1708,12 @@ int fit_image_load(bootm_headers_t *images, ulong addr,  		return -ENOEXEC;  	}  #endif + +#ifndef USE_HOSTCC +	fit_image_get_arch(fit, noffset, &os_arch); +	images->os.arch = os_arch; +#endif +  	if (image_type == IH_TYPE_FLATDT &&  	    !fit_image_check_comp(fit, noffset, IH_COMP_NONE)) {  		puts("FDT image is compressed"); | 
