1OUTPUT_FORMAT("elf64-littleaarch64") 2OUTPUT_ARCH(aarch64) 3ENTRY(bl2_entrypoint) 4MEMORY { 5 RAM (rwx): ORIGIN = ((((0x0e000000 + 0x00001000) + (0x00060000 - 0x00001000)) - 0x20000) - 0x25000), LENGTH = (((0x0e000000 + 0x00001000) + (0x00060000 - 0x00001000)) - 0x20000) - ((((0x0e000000 + 0x00001000) + (0x00060000 - 0x00001000)) - 0x20000) - 0x25000) 6} 7SECTIONS 8{ 9 . = ((((0x0e000000 + 0x00001000) + (0x00060000 - 0x00001000)) - 0x20000) - 0x25000); 10 ASSERT(. == ALIGN(((1) << (12))), 11 "BL2_BASE address is not aligned on a page boundary.") 12 .text . : { 13 __TEXT_START__ = .; 14 *bl2_entrypoint.o(.text*) 15 *(SORT_BY_ALIGNMENT(.text*)) 16 *(.vectors) 17 . = ALIGN(((1) << (12))); 18 __TEXT_END__ = .; 19 } >RAM 20 .ARM.extab . : { 21 *(.ARM.extab* .gnu.linkonce.armextab.*) 22 } >RAM 23 .ARM.exidx . : { 24 *(.ARM.exidx* .gnu.linkonce.armexidx.*) 25 } >RAM 26 .rodata . : { 27 __RODATA_START__ = .; 28 *(SORT_BY_ALIGNMENT(.rodata*)) 29 . = ALIGN(8); __RT_SVC_DESCS_START__ = .; KEEP(*(rt_svc_descs)) __RT_SVC_DESCS_END__ = .; . = ALIGN(8); __FCONF_POPULATOR_START__ = .; KEEP(*(.fconf_populator)) __FCONF_POPULATOR_END__ = .; . = ALIGN(8); __PMF_SVC_DESCS_START__ = .; KEEP(*(pmf_svc_descs)) __PMF_SVC_DESCS_END__ = .; . = ALIGN(8); __PARSER_LIB_DESCS_START__ = .; KEEP(*(.img_parser_lib_descs)) __PARSER_LIB_DESCS_END__ = .; . = ALIGN(8); __CPU_OPS_START__ = .; KEEP(*(cpu_ops)) __CPU_OPS_END__ = .; . = ALIGN(8); __GOT_START__ = .; *(.got) __GOT_END__ = .; 30 . = ALIGN(((1) << (12))); 31 __RODATA_END__ = .; 32 } >RAM 33 __RW_START__ = . ; 34 .data . : ALIGN(1) { __DATA_START__ = .; *(SORT_BY_ALIGNMENT(.data*)) __DATA_END__ = .; } >RAM 35 stacks (NOLOAD) : { __STACKS_START__ = .; *(tzfw_normal_stacks) __STACKS_END__ = .; } >RAM 36 .bss (NOLOAD) : ALIGN(16) { __BSS_START__ = .; *(SORT_BY_ALIGNMENT(.bss*)) *(COMMON) . = ALIGN((1 << 6)); __PMF_TIMESTAMP_START__ = .; KEEP(*(pmf_timestamp_array)) . = ALIGN((1 << 6)); __PMF_PERCPU_TIMESTAMP_END__ = .; __PERCPU_TIMESTAMP_SIZE__ = ABSOLUTE(. - __PMF_TIMESTAMP_START__); . = . + (__PERCPU_TIMESTAMP_SIZE__ * (((4) + (4)) - 1)); __PMF_TIMESTAMP_END__ = .; . = ALIGN(16); *(base_xlat_table) __BSS_END__ = .; } >RAM 37 xlat_table (NOLOAD) : { *(xlat_table) } >RAM 38 coherent_ram (NOLOAD) : ALIGN(((1) << (12))) { 39 __COHERENT_RAM_START__ = .; 40 *(tzfw_coherent_mem) 41 __COHERENT_RAM_END_UNALIGNED__ = .; 42 . = ALIGN(((1) << (12))); 43 __COHERENT_RAM_END__ = .; 44 } >RAM 45 __RW_END__ = .; 46 __BL2_END__ = .; 47 __BSS_SIZE__ = SIZEOF(.bss); 48 __COHERENT_RAM_UNALIGNED_SIZE__ = 49 __COHERENT_RAM_END_UNALIGNED__ - __COHERENT_RAM_START__; 50 ASSERT(. <= (((0x0e000000 + 0x00001000) + (0x00060000 - 0x00001000)) - 0x20000), "BL2 image has exceeded its limit.") 51} 52