Add DCSZ tag which holds dynamic memory (stack, bss, malloc pool) requirements of the decompressor code.
Signed-off-by: Łukasz Stelmach <l.stelm...@samsung.com> --- arch/arm/boot/compressed/vmlinux.lds.S | 9 ++++++++- arch/arm/include/asm/image.h | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/arch/arm/boot/compressed/vmlinux.lds.S b/arch/arm/boot/compressed/vmlinux.lds.S index 308e9cd6a897..d15c1269eb5d 100644 --- a/arch/arm/boot/compressed/vmlinux.lds.S +++ b/arch/arm/boot/compressed/vmlinux.lds.S @@ -39,6 +39,11 @@ SECTIONS LONG(ARM_ZIMAGE_MAGIC3) LONG(ZIMAGE_MAGIC(__piggy_size_addr - _start)) LONG(ZIMAGE_MAGIC(_kernel_bss_size)) + LONG(ZIMAGE_MAGIC(3)) + LONG(ARM_ZIMAGE_MAGIC4) + LONG(ZIMAGE_MAGIC((_end - __bss_start) + + (_stack_end - _stack_start) + + MALLOC_SIZE)) LONG(0) _table_end = .; } @@ -108,10 +113,12 @@ SECTIONS . = BSS_START; __bss_start = .; .bss : { *(.bss) } + . = ALIGN(8); /* the stack must be 64-bit aligned and adjoin bss */ _end = .; - . = ALIGN(8); /* the stack must be 64-bit aligned */ + _stack_start = .; .stack : { *(.stack) } + _stack_end = .; PROVIDE(__pecoff_data_size = ALIGN(512) - ADDR(.data)); PROVIDE(__pecoff_end = ALIGN(512)); diff --git a/arch/arm/include/asm/image.h b/arch/arm/include/asm/image.h index d5c18a0f6a34..55b51faa6b7e 100644 --- a/arch/arm/include/asm/image.h +++ b/arch/arm/include/asm/image.h @@ -15,6 +15,7 @@ #define ARM_ZIMAGE_MAGIC1 ZIMAGE_MAGIC(0x016f2818) #define ARM_ZIMAGE_MAGIC2 (0x45454545) #define ARM_ZIMAGE_MAGIC3 ZIMAGE_MAGIC(0x5a534c4b) +#define ARM_ZIMAGE_MAGIC4 ZIMAGE_MAGIC(0x5a534344) #ifndef __ASSEMBLY__ @@ -40,6 +41,8 @@ struct arm_zimage_tag { __le32 size_ptr; __le32 bss_size; } krnl_size; +#define ZIMAGE_TAG_ZIMAGE_MEM ARM_ZIMAGE_MAGIC4 + __le32 zimage_mem; } u; }; -- 2.26.2