From: Vladimir Serbinenko Date: Sun, 21 Feb 2016 18:28:56 +0000 (+0100) Subject: pre-located image for veyron X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=ab8770a31410339fc27b9adf51347a591e5bc876;p=thirdparty%2Fgrub.git pre-located image for veyron --- diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c index f61e86362..43f033316 100644 --- a/util/grub-mkimagexx.c +++ b/util/grub-mkimagexx.c @@ -218,7 +218,8 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc string_size += sizeof (".xen"); footer_size += XEN_NOTE_SIZE; } - if (image_target->id == IMAGE_COREBOOT && image_target->elf_target == EM_ARM) + if (image_target->id == IMAGE_COREBOOT && image_target->elf_target == EM_ARM + && image_target->link_addr == 0) { phnum++; shnum++; @@ -319,7 +320,8 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc phdr->p_align = grub_host_to_target32 (image_target->link_align); } - if (image_target->id == IMAGE_COREBOOT && image_target->elf_target == EM_ARM) + if (image_target->id == IMAGE_COREBOOT && image_target->elf_target == EM_ARM + && image_target->link_addr == 0) { char *note_start = (elf_img + program_size + header_size); Elf_Nhdr *note_ptr; @@ -532,7 +534,8 @@ SUFFIX (grub_mkimage_generate_elf) (const struct grub_install_image_target_desc shdr->sh_entsize = grub_host_to_target32 (0); shdr++; } - if (image_target->id == IMAGE_COREBOOT && image_target->elf_target == EM_ARM) + if (image_target->id == IMAGE_COREBOOT && image_target->elf_target == EM_ARM + && image_target->link_addr == 0) { memcpy (ptr, ".coreboot_flags", sizeof (".coreboot_flags")); shdr->sh_name = grub_host_to_target32 (ptr - str_start); diff --git a/util/mkimage.c b/util/mkimage.c index f040919a5..fc111d4f1 100644 --- a/util/mkimage.c +++ b/util/mkimage.c @@ -548,7 +548,25 @@ static const struct grub_install_image_target_desc image_targets[] = .mod_gap = GRUB_KERNEL_ARM_COREBOOT_MOD_GAP, .mod_align = GRUB_KERNEL_ARM_COREBOOT_MOD_ALIGN, .link_align = 4, - /* FIXME: Kept only for comaptibility with existing coreboot installs. */ + }, + /* For coreboot versions that don't support self-relocating images. */ + { + .dirname = "arm-coreboot-veyron", + .names = { "arm-coreboot-veyron", NULL }, + .voidp_sizeof = 4, + .bigendian = 0, + .id = IMAGE_COREBOOT, + .flags = PLATFORM_FLAGS_NONE, + .total_module_size = GRUB_KERNEL_ARM_COREBOOT_TOTAL_MODULE_SIZE, + .decompressor_compressed_size = TARGET_NO_FIELD, + .decompressor_uncompressed_size = TARGET_NO_FIELD, + .decompressor_uncompressed_addr = TARGET_NO_FIELD, + .section_align = GRUB_KERNEL_ARM_COREBOOT_MOD_ALIGN, + .vaddr_offset = 0, + .elf_target = EM_ARM, + .mod_gap = GRUB_KERNEL_ARM_COREBOOT_MOD_GAP, + .mod_align = GRUB_KERNEL_ARM_COREBOOT_MOD_ALIGN, + .link_align = 4, .link_addr = 0x43000000, }, {