]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
pre-located image for veyron
authorVladimir Serbinenko <phcoder@gmail.com>
Sun, 21 Feb 2016 18:28:56 +0000 (19:28 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Sun, 21 Feb 2016 18:28:56 +0000 (19:28 +0100)
util/grub-mkimagexx.c
util/mkimage.c

index f61e863624ee64ba1e99e4173f7c85eff92d7f53..43f033316ebd62b2ff3e81793c353f4a2213f6d2 100644 (file)
@@ -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);
index f040919a5f68970417d007b40cf8498ee38e32ae..fc111d4f110dca27aa67836f784de9c513d26dc3 100644 (file)
@@ -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,
     },
     {