Skip to content
Snippets Groups Projects
Commit 2687dce2 authored by Joseph Chen's avatar Joseph Chen
Browse files

spl: atf: Fix invalid bl32 pc when bl32 is absent


'bl2_to_bl31_params->bl32_ep_info' is Null and '&bl2_to_bl31_params->bl32_ep_info->pc'
is 0x8 when bl32 is absent. That means the pc value is determined by u-boot-spl.bin.
The 0x8 offset of u-boot-spl.bin is the value of '_TEXT_BASE', i.e. CONFIG_SPL_TEXT_BASE.

So far, only rk3576 without bl32 would trigger this issue as DRAM base is 0x40000000.

Let's init bl32_{ep,image}_info even bl32 is absent.

Signed-off-by: default avatarJoseph Chen <chenjh@rock-chips.com>
Change-Id: Ic928301baee1c7941f0befd7a89aa74dcbd88cb2
parent 6f5f0990
No related branches found
No related tags found
No related merge requests found
...@@ -52,16 +52,13 @@ static struct bl31_params *bl2_plat_get_bl31_params(struct spl_image_info *spl_i ...@@ -52,16 +52,13 @@ static struct bl31_params *bl2_plat_get_bl31_params(struct spl_image_info *spl_i
SET_PARAM_HEAD(bl2_to_bl31_params->bl31_image_info, SET_PARAM_HEAD(bl2_to_bl31_params->bl31_image_info,
ATF_PARAM_IMAGE_BINARY, ATF_VERSION_1, 0); ATF_PARAM_IMAGE_BINARY, ATF_VERSION_1, 0);
if (bl32_entry == -1)
goto bl33_setup;
/* Fill BL32 related information */ /* Fill BL32 related information */
bl2_to_bl31_params->bl32_ep_info = &bl31_params_mem.bl32_ep_info; bl2_to_bl31_params->bl32_ep_info = &bl31_params_mem.bl32_ep_info;
bl32_ep_info = &bl31_params_mem.bl32_ep_info; bl32_ep_info = &bl31_params_mem.bl32_ep_info;
SET_PARAM_HEAD(bl32_ep_info, ATF_PARAM_EP, ATF_VERSION_1, SET_PARAM_HEAD(bl32_ep_info, ATF_PARAM_EP, ATF_VERSION_1,
ATF_EP_SECURE); ATF_EP_SECURE);
bl32_ep_info->pc = bl32_entry; bl32_ep_info->pc = bl32_entry == -1 ? 0 : bl32_entry;
bl32_ep_info->spsr = SPSR_64(MODE_EL1, MODE_SP_ELX, bl32_ep_info->spsr = SPSR_64(MODE_EL1, MODE_SP_ELX,
DISABLE_ALL_EXECPTIONS); DISABLE_ALL_EXECPTIONS);
...@@ -69,7 +66,6 @@ static struct bl31_params *bl2_plat_get_bl31_params(struct spl_image_info *spl_i ...@@ -69,7 +66,6 @@ static struct bl31_params *bl2_plat_get_bl31_params(struct spl_image_info *spl_i
SET_PARAM_HEAD(bl2_to_bl31_params->bl32_image_info, SET_PARAM_HEAD(bl2_to_bl31_params->bl32_image_info,
ATF_PARAM_IMAGE_BINARY, ATF_VERSION_1, 0); ATF_PARAM_IMAGE_BINARY, ATF_VERSION_1, 0);
bl33_setup:
/* Fill BL33 related information */ /* Fill BL33 related information */
bl2_to_bl31_params->bl33_ep_info = &bl31_params_mem.bl33_ep_info; bl2_to_bl31_params->bl33_ep_info = &bl31_params_mem.bl33_ep_info;
bl33_ep_info = &bl31_params_mem.bl33_ep_info; bl33_ep_info = &bl31_params_mem.bl33_ep_info;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment