diff --git a/plat/allwinner/common/allwinner-common.mk b/plat/allwinner/common/allwinner-common.mk index 88ffc31f71bd874976898aaf57aa29c313a900c3..901d888954d285bca1276b7afbc5fadffd980742 100644 --- a/plat/allwinner/common/allwinner-common.mk +++ b/plat/allwinner/common/allwinner-common.mk @@ -50,6 +50,9 @@ ERRATA_A53_843419 := 1 ERRATA_A53_855873 := 1 ERRATA_A53_1530924 := 1 +# The traditional U-Boot load address is 160MB into DRAM. +PRELOADED_BL33_BASE ?= 0x4a000000 + # The reset vector can be changed for each CPU. PROGRAMMABLE_RESET_ADDRESS := 1 diff --git a/plat/allwinner/common/include/platform_def.h b/plat/allwinner/common/include/platform_def.h index 975cc48d522d8508cb313da34b0364f5652414cf..93720fff29c9f27cef75001517e97d1b48bc8d31 100644 --- a/plat/allwinner/common/include/platform_def.h +++ b/plat/allwinner/common/include/platform_def.h @@ -25,9 +25,6 @@ #define BL31_NOBITS_BASE (SUNXI_SRAM_A1_BASE + 0x1000) #define BL31_NOBITS_LIMIT (SUNXI_SRAM_A1_BASE + SUNXI_SRAM_A1_SIZE) -/* The traditional U-Boot load address is 160MB into DRAM, so at 0x4a000000 */ -#define PLAT_SUNXI_NS_IMAGE_OFFSET (SUNXI_DRAM_BASE + (160U << 20)) - /* How much memory to reserve as secure for BL32, if configured */ #define SUNXI_DRAM_SEC_SIZE (32U << 20) diff --git a/plat/allwinner/common/sunxi_bl31_setup.c b/plat/allwinner/common/sunxi_bl31_setup.c index e836a345bfc9aa0ff2fcc20694c02d6e968f218c..9c8eaa4093d73ae0a2e6c6fa57a807bf44801960 100644 --- a/plat/allwinner/common/sunxi_bl31_setup.c +++ b/plat/allwinner/common/sunxi_bl31_setup.c @@ -57,7 +57,7 @@ static void *sunxi_find_dtb(void) for (i = 0; i < 2048 / sizeof(uint64_t); i++) { uint32_t *dtb_base; - if (u_boot_base[i] != PLAT_SUNXI_NS_IMAGE_OFFSET) + if (u_boot_base[i] != PRELOADED_BL33_BASE) continue; /* Does the suspected U-Boot size look anyhow reasonable? */ @@ -96,7 +96,7 @@ void bl31_early_platform_setup2(u_register_t arg0, u_register_t arg1, * Tell BL31 where the non-trusted software image * is located and the entry state information */ - bl33_image_ep_info.pc = plat_get_ns_image_entrypoint(); + bl33_image_ep_info.pc = PRELOADED_BL33_BASE; bl33_image_ep_info.spsr = SPSR_64(MODE_EL2, MODE_SP_ELX, DISABLE_ALL_EXCEPTIONS); SET_SECURITY_STATE(bl33_image_ep_info.h.attr, NON_SECURE); diff --git a/plat/allwinner/common/sunxi_common.c b/plat/allwinner/common/sunxi_common.c index 841fea81daba04e47e35b62bae593aebf3094358..5b536a0432529830158090f0ac4bf73de20b4cd7 100644 --- a/plat/allwinner/common/sunxi_common.c +++ b/plat/allwinner/common/sunxi_common.c @@ -27,7 +27,7 @@ static const mmap_region_t sunxi_mmap[PLATFORM_MMAP_REGIONS + 1] = { MT_DEVICE | MT_RW | MT_SECURE | MT_EXECUTE_NEVER), MAP_REGION(SUNXI_DRAM_BASE, SUNXI_DRAM_VIRT_BASE, SUNXI_DRAM_SEC_SIZE, MT_RW_DATA | MT_SECURE), - MAP_REGION(PLAT_SUNXI_NS_IMAGE_OFFSET, + MAP_REGION(PRELOADED_BL33_BASE, SUNXI_DRAM_VIRT_BASE + SUNXI_DRAM_SEC_SIZE, SUNXI_DRAM_MAP_SIZE, MT_RO_DATA | MT_NS), @@ -39,15 +39,6 @@ unsigned int plat_get_syscnt_freq2(void) return SUNXI_OSC24M_CLK_IN_HZ; } -uintptr_t plat_get_ns_image_entrypoint(void) -{ -#ifdef PRELOADED_BL33_BASE - return PRELOADED_BL33_BASE; -#else - return PLAT_SUNXI_NS_IMAGE_OFFSET; -#endif -} - void sunxi_configure_mmu_el3(int flags) { mmap_add_region(BL_CODE_BASE, BL_CODE_BASE,