[U-Boot] [PATCH] armv8: Remove the codes about switching to EL1 before jumping to kernel
Huan Wang
alison.wang at nxp.com
Mon Aug 29 11:29:48 CEST 2016
> On 18.07.16 05:24, Huan Wang wrote:
> > Hi, Alex,
> >
> >
> >
> > As there is strong objection to remove the codes about
> > switching to EL1, I think we have to remain it, do you agree?
>
> I agree, yes.
>
> > If it is remained, I think your suggestion about
> > **always** jumping to ep for both switching to AArch64 and AArch32
> > modes will make the code hard to realize and very complicated. So I
> > prefer to keep the process in v4 patches. What is your opinion?
>
> I think we should still convert it to a function call based approach.
> You can either just convert the current flow to functions:
>
> static void enter_in_el1(...)
> {
> call_in_el1(payload_pc, payload_bits, ...); }
>
> #ifdef ENTER_PAYLOAD_IN_EL1
> call_in_el2(enter_in_el1, 64bit, ...);
> #else
> call_in_el2(payload_pc, payload_bits, ...); #endif
>
> Or you could add a check in the EL1 caller if you are in EL3 that you
> want to go to EL2 first:
>
> long call_in_el1(...)
> {
> if (current_el() == 3)
> return call_in_el2(call_in_el1, ...);
>
> asm_call_in_el1(...);
> }
>
>
[Alison Wang] Yes, it can work for primary core and secondary cores for LayerScape.
For other ARMv8 platforms, such as
arch/arm/mach-exynos/soc.c,
void lowlevel_init(void)
{
armv8_switch_to_el2();
armv8_switch_to_el1();
}
Is there any appropriate ep we can transfer for these functions?
Even for the common arch/arm/cpu/armv8/start.S,
bl armv8_switch_to_el2
#ifdef CONFIG_ARMV8_SWITCH_TO_EL1
bl armv8_switch_to_el1
#endif
The ep is hard to define.
"msr elr_el3, lr" really make sense.
Best Regards,
Alison Wang
More information about the U-Boot
mailing list