mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-19 02:54:24 +00:00
Introduce print_entry_point_info() function
This patch introduces a new function called 'print_entry_point_info' that prints an entry_point_t structure for debugging purposes. As such, it can be used to display the entry point address, SPSR and arguments passed from a firmware image to the next one. This function is now called in the following images transitions: - BL1 to BL2 - BL1 to BL31 - BL31 to the next image (typically BL32 or BL33) The following changes have been introduced: - Fix the output format of the SPSR value : SPSR is a 32-bit value, not a 64-bit one. - Print all arguments values. The entry_point_info_t structure allows to pass up to 8 arguments. In most cases, only the first 2 arguments were printed. print_entry_point_info() now prints all of them as 'VERBOSE' traces. Change-Id: Ieb384bffaa7849e6cb95a01a47c0b7fc2308653a
This commit is contained in:
parent
f57e2db6ef
commit
68a68c925f
4 changed files with 31 additions and 18 deletions
|
@ -57,6 +57,9 @@ static void __dead2 bl1_run_bl2(entry_point_info_t *bl2_ep)
|
||||||
write_spsr_el3(bl2_ep->spsr);
|
write_spsr_el3(bl2_ep->spsr);
|
||||||
write_elr_el3(bl2_ep->pc);
|
write_elr_el3(bl2_ep->pc);
|
||||||
|
|
||||||
|
NOTICE("BL1: Booting BL2\n");
|
||||||
|
print_entry_point_info(bl2_ep);
|
||||||
|
|
||||||
eret(bl2_ep->args.arg0,
|
eret(bl2_ep->args.arg0,
|
||||||
bl2_ep->args.arg1,
|
bl2_ep->args.arg1,
|
||||||
bl2_ep->args.arg2,
|
bl2_ep->args.arg2,
|
||||||
|
@ -190,13 +193,6 @@ void bl1_main(void)
|
||||||
|
|
||||||
bl1_plat_set_bl2_ep_info(&bl2_image_info, &bl2_ep);
|
bl1_plat_set_bl2_ep_info(&bl2_image_info, &bl2_ep);
|
||||||
bl2_ep.args.arg1 = (unsigned long)bl2_tzram_layout;
|
bl2_ep.args.arg1 = (unsigned long)bl2_tzram_layout;
|
||||||
NOTICE("BL1: Booting BL2\n");
|
|
||||||
INFO("BL1: BL2 address = 0x%llx\n",
|
|
||||||
(unsigned long long) bl2_ep.pc);
|
|
||||||
INFO("BL1: BL2 spsr = 0x%x\n", bl2_ep.spsr);
|
|
||||||
VERBOSE("BL1: BL2 memory layout address = 0x%llx\n",
|
|
||||||
(unsigned long long) bl2_tzram_layout);
|
|
||||||
|
|
||||||
bl1_run_bl2(&bl2_ep);
|
bl1_run_bl2(&bl2_ep);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -209,12 +205,5 @@ void bl1_main(void)
|
||||||
void display_boot_progress(entry_point_info_t *bl31_ep_info)
|
void display_boot_progress(entry_point_info_t *bl31_ep_info)
|
||||||
{
|
{
|
||||||
NOTICE("BL1: Booting BL3-1\n");
|
NOTICE("BL1: Booting BL3-1\n");
|
||||||
INFO("BL1: BL3-1 address = 0x%llx\n",
|
print_entry_point_info(bl31_ep_info);
|
||||||
(unsigned long long)bl31_ep_info->pc);
|
|
||||||
INFO("BL1: BL3-1 spsr = 0x%llx\n",
|
|
||||||
(unsigned long long)bl31_ep_info->spsr);
|
|
||||||
INFO("BL1: BL3-1 params address = 0x%llx\n",
|
|
||||||
(unsigned long long)bl31_ep_info->args.arg0);
|
|
||||||
INFO("BL1: BL3-1 plat params address = 0x%llx\n",
|
|
||||||
(unsigned long long)bl31_ep_info->args.arg1);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,9 +149,7 @@ void bl31_prepare_next_image_entry(void)
|
||||||
|
|
||||||
INFO("BL3-1: Preparing for EL3 exit to %s world\n",
|
INFO("BL3-1: Preparing for EL3 exit to %s world\n",
|
||||||
(image_type == SECURE) ? "secure" : "normal");
|
(image_type == SECURE) ? "secure" : "normal");
|
||||||
INFO("BL3-1: Next image address = 0x%llx\n",
|
print_entry_point_info(next_image_info);
|
||||||
(unsigned long long) next_image_info->pc);
|
|
||||||
INFO("BL3-1: Next image spsr = 0x%x\n", next_image_info->spsr);
|
|
||||||
cm_init_my_context(next_image_info);
|
cm_init_my_context(next_image_info);
|
||||||
cm_prepare_el3_exit(image_type);
|
cm_prepare_el3_exit(image_type);
|
||||||
}
|
}
|
||||||
|
|
|
@ -352,3 +352,27 @@ int load_auth_image(meminfo_t *mem_layout,
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Print the content of an entry_point_info_t structure.
|
||||||
|
******************************************************************************/
|
||||||
|
void print_entry_point_info(const entry_point_info_t *ep_info)
|
||||||
|
{
|
||||||
|
INFO("Entry point address = 0x%llx\n",
|
||||||
|
(unsigned long long) ep_info->pc);
|
||||||
|
INFO("SPSR = 0x%lx\n", (unsigned long) ep_info->spsr);
|
||||||
|
|
||||||
|
#define PRINT_IMAGE_ARG(n) \
|
||||||
|
VERBOSE("Argument #" #n " = 0x%llx\n", \
|
||||||
|
(unsigned long long) ep_info->args.arg##n)
|
||||||
|
|
||||||
|
PRINT_IMAGE_ARG(0);
|
||||||
|
PRINT_IMAGE_ARG(1);
|
||||||
|
PRINT_IMAGE_ARG(2);
|
||||||
|
PRINT_IMAGE_ARG(3);
|
||||||
|
PRINT_IMAGE_ARG(4);
|
||||||
|
PRINT_IMAGE_ARG(5);
|
||||||
|
PRINT_IMAGE_ARG(6);
|
||||||
|
PRINT_IMAGE_ARG(7);
|
||||||
|
#undef PRINT_IMAGE_ARG
|
||||||
|
}
|
||||||
|
|
|
@ -242,6 +242,8 @@ extern const char version_string[];
|
||||||
void reserve_mem(uint64_t *free_base, size_t *free_size,
|
void reserve_mem(uint64_t *free_base, size_t *free_size,
|
||||||
uint64_t addr, size_t size);
|
uint64_t addr, size_t size);
|
||||||
|
|
||||||
|
void print_entry_point_info(const entry_point_info_t *ep_info);
|
||||||
|
|
||||||
#endif /*__ASSEMBLY__*/
|
#endif /*__ASSEMBLY__*/
|
||||||
|
|
||||||
#endif /* __BL_COMMON_H__ */
|
#endif /* __BL_COMMON_H__ */
|
||||||
|
|
Loading…
Add table
Reference in a new issue