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:
@@ -9,8 +9,16 @@
|
|||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/macro.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"
|
.pushsection .text.armv8_switch_to_el2, "ax"
|
||||||
ENTRY(armv8_switch_to_el2)
|
ENTRY(armv8_switch_to_el2)
|
||||||
|
bl armv8_switch_to_el2_prep
|
||||||
|
nop
|
||||||
switch_el x6, 1f, 0f, 0f
|
switch_el x6, 1f, 0f, 0f
|
||||||
0:
|
0:
|
||||||
cmp x5, #ES_TO_AARCH64
|
cmp x5, #ES_TO_AARCH64
|
||||||
|
@@ -238,6 +238,22 @@ int __asm_flush_l3_dcache(void);
|
|||||||
int __asm_invalidate_l3_icache(void);
|
int __asm_invalidate_l3_icache(void);
|
||||||
void __asm_switch_ttbr(u64 new_ttbr);
|
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
|
* 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) ||
|
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_FIRMWARE) ||
|
||||||
fit_image_check_type(fit, noffset, IH_TYPE_TEE) ||
|
fit_image_check_type(fit, noffset, IH_TYPE_TEE) ||
|
||||||
|
fit_image_check_type(fit, noffset, IH_TYPE_TFA_BL31) ||
|
||||||
(image_type == IH_TYPE_KERNEL &&
|
(image_type == IH_TYPE_KERNEL &&
|
||||||
fit_image_check_type(fit, noffset, IH_TYPE_KERNEL_NOLOAD));
|
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_FDT_LEGACY, "fdt_legacy", "legacy Image with Flat Device Tree ", },
|
||||||
{ IH_TYPE_RENESAS_SPKG, "spkgimage", "Renesas SPKG Image" },
|
{ IH_TYPE_RENESAS_SPKG, "spkgimage", "Renesas SPKG Image" },
|
||||||
{ IH_TYPE_STARFIVE_SPL, "sfspl", "StarFive SPL Image" },
|
{ IH_TYPE_STARFIVE_SPL, "sfspl", "StarFive SPL Image" },
|
||||||
|
{ IH_TYPE_TFA_BL31, "tfa-bl31", "TFA BL31 Image", },
|
||||||
{ -1, "", "", },
|
{ -1, "", "", },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -232,6 +232,7 @@ enum image_type_t {
|
|||||||
IH_TYPE_FDT_LEGACY, /* Binary Flat Device Tree Blob in a Legacy Image */
|
IH_TYPE_FDT_LEGACY, /* Binary Flat Device Tree Blob in a Legacy Image */
|
||||||
IH_TYPE_RENESAS_SPKG, /* Renesas SPKG image */
|
IH_TYPE_RENESAS_SPKG, /* Renesas SPKG image */
|
||||||
IH_TYPE_STARFIVE_SPL, /* StarFive SPL image */
|
IH_TYPE_STARFIVE_SPL, /* StarFive SPL image */
|
||||||
|
IH_TYPE_TFA_BL31, /* TFA BL31 image */
|
||||||
|
|
||||||
IH_TYPE_COUNT, /* Number of image types */
|
IH_TYPE_COUNT, /* Number of image types */
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user