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

york sun york.sun at nxp.com
Wed Nov 23 01:59:30 CET 2016


On 11/09/2016 07:02 PM, 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.
>
> PSCI method can also be used for secondary cores to load 32-bit OS.
> As PSCI and secure monitor firmware framework are enabled, loading 32-bit OS is supported in such case. The default target exception level returned to U-Boot is EL2, so the corresponding work to switch to AArch32 EL2 and jump to 32-bit OS are done in U-Boot and secure firmware together.
>
> ---------------------------------------
> Changes in v8:
> - Fix the issue when U-Boot is running in EL2 or EL1.
> - Support loading 32-bit OS with PSCI enabled.
>
> Changes in v7:
> - Move the call for armv8_switch_to_el2_m into the first patch.
>
> 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().
> - Make secondary_switch_to_el1() always jump to ep when switching to AArch64 or AArch32 modes.
>
> 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 (3):
>       armv8: Support loading 32-bit OS in AArch32 execution state

Squashed with Alex Graf's patch "ls2080: efi_loader: Move EL2 switch to 
function call based version".

>       armv8: fsl-layerscape: SMP support for loading 32-bit OS
>       armv8: fsl-layerscape: Support loading 32-bit OS with PSCI enabled
>

This set is applied to fsl-qoriq, awaiting upstream. Thanks.

York



More information about the U-Boot mailing list