mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-11 07:24:46 +00:00
Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-sh
Add empty weak assembler function armv8_switch_to_el2_prep() which is jumped to just before U-Boot determines which EL it is running in and decides which path to take to boot the Linux kernel. Add IH_TYPE_TFA_BL31 into supported images type, to allow implementation of board specific U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_TFA_BL31, ...) TFA BL31 loadable handler for fitImages. This PR contains common hooks which are noop, R-Car Gen4 board specific implementation using these hooks is coming in next PR.
This commit is contained in:
commit
274dc5291c
5 changed files with 27 additions and 0 deletions
|
@ -9,8 +9,16 @@
|
|||
#include <linux/linkage.h>
|
||||
#include <asm/macro.h>
|
||||
|
||||
.pushsection .text.armv8_switch_to_el2_prep, "ax"
|
||||
WEAK(armv8_switch_to_el2_prep)
|
||||
ret
|
||||
ENDPROC(armv8_switch_to_el2_prep)
|
||||
.popsection
|
||||
|
||||
.pushsection .text.armv8_switch_to_el2, "ax"
|
||||
ENTRY(armv8_switch_to_el2)
|
||||
bl armv8_switch_to_el2_prep
|
||||
nop
|
||||
switch_el x6, 1f, 0f, 0f
|
||||
0:
|
||||
cmp x5, #ES_TO_AARCH64
|
||||
|
|
|
@ -238,6 +238,22 @@ int __asm_flush_l3_dcache(void);
|
|||
int __asm_invalidate_l3_icache(void);
|
||||
void __asm_switch_ttbr(u64 new_ttbr);
|
||||
|
||||
/*
|
||||
* armv8_switch_to_el2_prep() - prepare for switch from EL3 to EL2 for ARMv8
|
||||
*
|
||||
* @args: For loading 64-bit OS, fdt address.
|
||||
* For loading 32-bit OS, zero.
|
||||
* @mach_nr: For loading 64-bit OS, zero.
|
||||
* For loading 32-bit OS, machine nr
|
||||
* @fdt_addr: For loading 64-bit OS, zero.
|
||||
* For loading 32-bit OS, fdt address.
|
||||
* @arg4: Input argument.
|
||||
* @entry_point: kernel entry point
|
||||
* @es_flag: execution state flag, ES_TO_AARCH64 or ES_TO_AARCH32
|
||||
*/
|
||||
void armv8_switch_to_el2_prep(u64 args, u64 mach_nr, u64 fdt_addr,
|
||||
u64 arg4, u64 entry_point, u64 es_flag);
|
||||
|
||||
/*
|
||||
* armv8_switch_to_el2() - switch from EL3 to EL2 for ARMv8
|
||||
*
|
||||
|
|
|
@ -2175,6 +2175,7 @@ int fit_image_load(struct bootm_headers *images, ulong addr,
|
|||
type_ok = fit_image_check_type(fit, noffset, image_type) ||
|
||||
fit_image_check_type(fit, noffset, IH_TYPE_FIRMWARE) ||
|
||||
fit_image_check_type(fit, noffset, IH_TYPE_TEE) ||
|
||||
fit_image_check_type(fit, noffset, IH_TYPE_TFA_BL31) ||
|
||||
(image_type == IH_TYPE_KERNEL &&
|
||||
fit_image_check_type(fit, noffset, IH_TYPE_KERNEL_NOLOAD));
|
||||
|
||||
|
|
|
@ -183,6 +183,7 @@ static const table_entry_t uimage_type[] = {
|
|||
{ IH_TYPE_FDT_LEGACY, "fdt_legacy", "legacy Image with Flat Device Tree ", },
|
||||
{ IH_TYPE_RENESAS_SPKG, "spkgimage", "Renesas SPKG Image" },
|
||||
{ IH_TYPE_STARFIVE_SPL, "sfspl", "StarFive SPL Image" },
|
||||
{ IH_TYPE_TFA_BL31, "tfa-bl31", "TFA BL31 Image", },
|
||||
{ -1, "", "", },
|
||||
};
|
||||
|
||||
|
|
|
@ -232,6 +232,7 @@ enum image_type_t {
|
|||
IH_TYPE_FDT_LEGACY, /* Binary Flat Device Tree Blob in a Legacy Image */
|
||||
IH_TYPE_RENESAS_SPKG, /* Renesas SPKG image */
|
||||
IH_TYPE_STARFIVE_SPL, /* StarFive SPL image */
|
||||
IH_TYPE_TFA_BL31, /* TFA BL31 image */
|
||||
|
||||
IH_TYPE_COUNT, /* Number of image types */
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue