From f900bea454e0f3ed8ae0e7251a2787669aec3934 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Sun, 21 Feb 2016 18:59:14 +0100 Subject: [PATCH] coreboot --- util/grub-mkimagexx.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c index 4832d4407..f61e86362 100644 --- a/util/grub-mkimagexx.c +++ b/util/grub-mkimagexx.c @@ -285,7 +285,10 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc { grub_uint32_t target_addr_mods; phdr->p_filesz = grub_host_to_target32 (layout->kernel_size); - phdr->p_memsz = grub_host_to_target32 (layout->kernel_size + layout->bss_size); + if (image_target->id == IMAGE_COREBOOT && image_target->elf_target == EM_ARM) + phdr->p_memsz = grub_host_to_target32 (layout->kernel_size); + else + phdr->p_memsz = grub_host_to_target32 (layout->kernel_size + layout->bss_size); phdr++; phdr->p_type = grub_host_to_target32 (PT_GNU_STACK); @@ -303,6 +306,10 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc if (image_target->id == IMAGE_COREBOOT && image_target->elf_target == EM_386) target_addr_mods = GRUB_KERNEL_I386_COREBOOT_MODULES_ADDR; + else if (image_target->id == IMAGE_COREBOOT && image_target->elf_target == EM_ARM) + target_addr_mods = ALIGN_UP (target_addr + layout->end + + image_target->mod_gap, + image_target->mod_align); else target_addr_mods = ALIGN_UP (target_addr + layout->kernel_size + layout->bss_size + image_target->mod_gap, -- 2.47.3