[U-Boot] [PATCH v6 0/2] armv8: Support loading 32-bit OS in AArch32 execution state

york sun york.sun at nxp.com
Wed Oct 5 21:00:13 CEST 2016


On 09/09/2016 01:56 AM, Alison Wang wrote:
> This series is 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.
>
> Spin-table method is used for secondary cores to load 32-bit OS. The architecture
> information will be got through checking FIT image and saved in the os_arch element
> of spin-table, then the secondary cores will check os_arch and jump to 32-bit OS or
> 64-bit OS automatically.
>
> ---------------------------------------
> Changes in v6:
> - Modified armv8_switch_to_el1(). It will always jump to ep when switching to AArch64 or AArch32 modes.
> - Make other platforms compatible with the new armv8_switch_to_el2() and armv8_switch_to_el1().
>
> Changes in v5:
> - Modified armv8_switch_to_el2(). It will always jump to ep when switching to AArch64 or AArch32 modes.
> - Make secondary_switch_to_el2() always jump to ep when switching to AArch64 or AArch32 modes.
>
> Changes in v4:
> - Correct config ARM64_SUPPORT_AARCH32.
> - Omit arch and ftaddr arguments.
> - Rename "xreg5" to "tmp".
> - Use xxx_RES1 to combine all RES1 fields in xxx register.
> - Use an immediate cmp directly.
> - Use #ifdef for CONFIG_ARM64_SUPPORT_AARCH32.
>
> Changes in v3:
> - Comments the functions and the arguments.
> - Rename the real parameters.
> - Use the macros instead of the magic values.
> - Remove the redundant codes.
> - Clean up all of the mess in boot_jump_linux().
> - Add CONFIG_ARM64_SUPPORT_AARCH32 to detect for some ARM64 system doesn't support AArch32 state.
> - Adjust the arguments for armv8_switch_to_el2_m and armv8_switch_to_el1_m.
>
> Changes in v2:
> - armv8_switch_to_el2_aarch32() is removed. armv8_switch_to_el2_m is used
>   to switch to AArch64 EL2 or AArch32 Hyp.
> - armv8_switch_to_el1_aarch32() is removed. armv8_switch_to_el1_m is used
>   to switch to AArch64 EL1 or AArch32 SVC.
> - Support to call armv8_switch_to_el2_m and armv8_switch_to_el1_m.
>
> ----------------------------------------------------------------
> Alison Wang (2):
>       armv8: Support loading 32-bit OS in AArch32 execution state
>       armv8: fsl-layerscape: SMP support for loading 32-bit OS

Alison,

The change overall is OK, but the way you split the patches is not. If 
you apply the first patch and then compile, you will see all our armv8 
platforms are broken. You changed the definition of macro 
armv8_switch_to_el2_m in the first patch, but you change the call in the 
second patch.

York


More information about the U-Boot mailing list