diff --git a/bl31/bl31_main.c b/bl31/bl31_main.c index 536bb864c5e7325f68242ad24c44a6b17cfc17de..cee5a04e21511d837af97dd1d526939db53db1df 100644 --- a/bl31/bl31_main.c +++ b/bl31/bl31_main.c @@ -173,6 +173,14 @@ void bl31_prepare_next_image_entry() if (image_type == NON_SECURE) scr |= SCR_NS_BIT; + /* + * Setup general purpose registers context for next image. + */ + cpu_context *context = cm_get_context(read_mpidr(), + next_image_info->security_state); + memcpy(&context->gpregs_ctx, &next_image_info->args, + sizeof(next_image_info->args)); + /* * Tell the context mgmt. library to ensure that SP_EL3 points to * the right context to exit from EL3 correctly. diff --git a/plat/juno/bl31_plat_setup.c b/plat/juno/bl31_plat_setup.c index 19f2085d82807ab24729bc082499a2e518ecf7f7..620c0133eea149c57d30279c56a96231f549779b 100644 --- a/plat/juno/bl31_plat_setup.c +++ b/plat/juno/bl31_plat_setup.c @@ -108,6 +108,9 @@ void bl31_early_platform_setup(bl31_args *from_bl2, void *data) { bl2_to_bl31_args = *from_bl2; + + /* UEFI expects x0 to be primary CPU MPID */ + bl2_to_bl31_args.bl33_image_info.args.arg0 = PRIMARY_CPU; } /******************************************************************************* diff --git a/plat/juno/platform.h b/plat/juno/platform.h index c85b270a909e44dad37b8ad274c992aef1c49f92..e6f8a4179b876f14cc840cdbc7e96bbfc77a1c20 100644 --- a/plat/juno/platform.h +++ b/plat/juno/platform.h @@ -62,7 +62,7 @@ /* Non-Trusted Firmware BL3-3 and its load address */ #define BL33_IMAGE_NAME "bl33.bin" /* e.g. UEFI */ -#define NS_IMAGE_OFFSET (DRAM_BASE + 0x8000000) /* DRAM + 128MB */ +#define NS_IMAGE_OFFSET 0xE0000000 /* Firmware Image Package */ #define FIP_IMAGE_NAME "fip.bin"