
On 20.05.16 10:26, Huan Wang wrote:
On 20.05.16 08:53, Huan Wang wrote:
On 05/19/2016 10:26 AM, Alison Wang wrote:
To support loading a 32-bit OS, the execution state will change from AArch64 to AArch32 when jumping to kernel.
The architecture information will be got through checking FIT image, then U-Boot will load 32-bit OS or 64-bit OS automatically.
Signed-off-by: Ebony Zhu ebony.zhu@nxp.com Signed-off-by: Alison Wang alison.wang@nxp.com Signed-off-by: Chenhui Zhao chenhui.zhao@nxp.com
[...]
--- a/common/image-fit.c +++ b/common/image-fit.c @@ -1163,7 +1163,8 @@ int fit_image_check_arch(const void *fit, int
noffset, uint8_t arch)
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);
This should be a Kconfig option. ThunderX doesn't support AArch32 execution.
[Alison Wang] I can't understand your meaning. Can you clarify it?
U-Boot supports the ThunderX SoC which uses Cavium's own ARMv8 core implementation. That core does not support running AArch32 code.
[Alison Wang] Oh, I think your concern is that this function will not detect FIT image is wrong when loading 32-bit kernel on ThunderX,
right?
Then what is your suggestion to fix this issue?
My suggestion is to introduce a new Kconfig option that says "this arm64 system can execute aarch32 code" which is set as default y. CONFIG_THUNDERX would then set it to n if that's possible - or you'd just set it to n in the thunderx defconfig.
[Alison Wang] Good idea. I will do it in the next version. Thanks.
Best Regards, Alison Wang