diff --git a/arch/arm/lib/pbl.lds.S b/arch/arm/lib/pbl.lds.S index d3ec2f86a..1eae8298e 100644 --- a/arch/arm/lib/pbl.lds.S +++ b/arch/arm/lib/pbl.lds.S @@ -86,6 +86,12 @@ SECTIONS } __piggydata_end = .; - _barebox_image_size = __piggydata_end - (TEXT_BASE - SZ_2M); + . = ALIGN(4); + .image_end : { + KEEP(*(.image_end)) + } + __image_end = .; + + _barebox_image_size = __image_end - (TEXT_BASE - SZ_2M); _barebox_pbl_size = __bss_start - (TEXT_BASE - SZ_2M); } diff --git a/arch/arm/lib/runtime-offset.S b/arch/arm/lib/runtime-offset.S index 15bf4149b..f10c4c846 100644 --- a/arch/arm/lib/runtime-offset.S +++ b/arch/arm/lib/runtime-offset.S @@ -42,6 +42,9 @@ ld_var_entry __dynsym_end ld_var_entry _barebox_image_size ld_var_entry __bss_start ld_var_entry __bss_stop +#ifdef __PBL__ +ld_var_entry __image_end +#endif 1: ldr r1, =__ld_var_base diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h index 5492aa4d9..984f8b606 100644 --- a/include/asm-generic/sections.h +++ b/include/asm-generic/sections.h @@ -6,6 +6,7 @@ extern char __bss_start[], __bss_stop[]; extern char _sdata[], _edata[]; extern char __bare_init_start[], __bare_init_end[]; extern char _end[]; +extern char __image_end[]; extern void *_barebox_image_size; extern void *_barebox_bare_init_size; extern void *_barebox_pbl_size;