diff --git a/ChangeLog b/ChangeLog index e071c9ca1..04547ed03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-11-10 Vladimir Serbinenko + + * util/grub-mkimagexx.c (generate_elf): Fix module address on coreboot. + 2013-11-10 Vladimir Serbinenko * grub-core/term/ieee1275/escc.c (GRUB_MOD_INIT): Fix order of channels. diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c index acfa71f1d..36a683d6f 100644 --- a/util/grub-mkimagexx.c +++ b/util/grub-mkimagexx.c @@ -171,9 +171,12 @@ SUFFIX (generate_elf) (const struct grub_install_image_target_desc *image_target phdr->p_filesz = phdr->p_memsz = grub_host_to_target32 (*core_size - kernel_size); - target_addr_mods = ALIGN_UP (target_addr + kernel_size + bss_size - + image_target->mod_gap, - image_target->mod_align); + if (image_target->id == IMAGE_COREBOOT) + target_addr_mods = GRUB_KERNEL_I386_COREBOOT_MODULES_ADDR; + else + target_addr_mods = ALIGN_UP (target_addr + kernel_size + bss_size + + image_target->mod_gap, + image_target->mod_align); phdr->p_vaddr = grub_host_to_target_addr (target_addr_mods); phdr->p_paddr = grub_host_to_target_addr (target_addr_mods); phdr->p_align = grub_host_to_target32 (image_target->link_align);