diff options
-rw-r--r-- | bl31/bl31_main.c | 5 | ||||
-rw-r--r-- | plat/sun50iw1p1/bl31_sunxi_setup.c | 24 |
2 files changed, 26 insertions, 3 deletions
diff --git a/bl31/bl31_main.c b/bl31/bl31_main.c index c32aefb..db54abb 100644 --- a/bl31/bl31_main.c +++ b/bl31/bl31_main.c @@ -153,9 +153,8 @@ void bl31_prepare_next_image_entry(void) INFO("BL3-1: Preparing for EL3 exit to %s world\n", (image_type == SECURE) ? "secure" : "normal"); - INFO("BL3-1: Next image address = 0x%llx\n", - (unsigned long long) next_image_info->pc); - INFO("BL3-1: Next image spsr = 0x%x\n", next_image_info->spsr); + INFO("BL3-1: Next image address: 0x%lx, SPSR: 0x%x\n", + next_image_info->pc, next_image_info->spsr); cm_init_context(read_mpidr_el1(), next_image_info); cm_prepare_el3_exit(image_type); } diff --git a/plat/sun50iw1p1/bl31_sunxi_setup.c b/plat/sun50iw1p1/bl31_sunxi_setup.c index adb1b50..0f2eff8 100644 --- a/plat/sun50iw1p1/bl31_sunxi_setup.c +++ b/plat/sun50iw1p1/bl31_sunxi_setup.c @@ -41,6 +41,8 @@ #include "sunxi_def.h" #include "sunxi_private.h" +#include <debug.h> + /******************************************************************************* * Declarations of linker defined symbols which will help us find the layout * of trusted SRAM @@ -118,6 +120,14 @@ entry_point_info_t *bl31_plat_get_next_image_ep_info(uint32_t type) #endif } +static unsigned long get_pc(void) +{ + unsigned long pc; + + __asm__ volatile ("adr %0, .\n" : "=r" (pc)); + return pc; +} + /******************************************************************************* * Perform any BL31 specific platform actions. Here is an opportunity to copy * parameters passed by the calling EL (S-EL1 in BL2 & S-EL3 in BL1) before they @@ -132,8 +142,22 @@ entry_point_info_t *bl31_plat_get_next_image_ep_info(uint32_t type) void bl31_early_platform_setup(bl31_params_t *from_bl2, void *plat_params_from_bl2) { + unsigned long load_addr; + const char *mem_name = "unknown memory region"; + /* Initialize the console to provide early debug support */ console_init(SUNXI_UART0_BASE, UART0_CLK_IN_HZ, UART0_BAUDRATE); + load_addr = get_pc() & ~0xfff; + if (load_addr >= 0x44000 && load_addr < 0x54000) { + mem_name = "SRAM A2"; + } else if (load_addr >= 0x10000 && load_addr < 0x18000) { + mem_name = "SRAM A1"; + } else if (load_addr >= 0x18000 && load_addr < 0x40000) { + mem_name = "SRAM C"; + } else if (load_addr >= 0x40000000) + mem_name = "DRAM"; + + NOTICE("BL3-1: Running in %s (@0x%lx)\n", mem_name, load_addr); #if 0 #if RESET_TO_BL31 |