[U-Boot] [PATCH v3 4/7] ARM: switch to non-secure state during bootm execution
Christoffer Dall
christoffer.dall at linaro.org
Tue Jul 30 00:02:24 CEST 2013
On Wed, Jul 10, 2013 at 01:54:16AM +0200, Andre Przywara wrote:
[...]
> diff --git a/arch/arm/lib/bootm.c b/arch/arm/lib/bootm.c
> index 1b6e0ac..7b0619e 100644
> --- a/arch/arm/lib/bootm.c
> +++ b/arch/arm/lib/bootm.c
> @@ -34,6 +34,10 @@
> #include <asm/bootm.h>
> #include <linux/compiler.h>
>
> +#ifdef CONFIG_ARMV7_NONSEC
> +#include <asm/armv7.h>
> +#endif
> +
> DECLARE_GLOBAL_DATA_PTR;
>
> static struct tag *params;
> @@ -186,6 +190,29 @@ static void setup_end_tag(bd_t *bd)
>
> __weak void setup_board_tags(struct tag **in_params) {}
>
> +static void do_nonsec_virt_switch(void)
> +{
> +#ifdef CONFIG_ARMV7_NONSEC
> + int ret;
> +
> + ret = armv7_switch_nonsec();
> + switch (ret) {
> + case NONSEC_VIRT_SUCCESS:
> + debug("entered non-secure state\n");
> + break;
> + case NONSEC_ERR_NO_SEC_EXT:
> + printf("nonsec: Security extensions not implemented.\n");
> + break;
> + case NONSEC_ERR_NO_GIC_ADDRESS:
> + printf("nonsec: could not determine GIC address.\n");
> + break;
> + case NONSEC_ERR_GIC_ADDRESS_ABOVE_4GB:
> + printf("nonsec: PERIPHBASE is above 4 GB, no access.\n");
> + break;
> + }
> +#endif
> +}
I still don't get why you just don't make armv7_switch_nonsec a void and
print the error when they occur... ???
-Christoffer
More information about the U-Boot
mailing list