]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
coreboot
authorVladimir Serbinenko <phcoder@gmail.com>
Sun, 21 Feb 2016 17:44:55 +0000 (18:44 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Sun, 21 Feb 2016 17:44:55 +0000 (18:44 +0100)
grub-core/kern/arm/startup.S
include/grub/arm/coreboot/kernel.h
include/grub/coreboot/lbio.h
include/grub/offsets.h
util/mkimage.c

index fd56b31a6bca81359aedfbb8e14c5279ea1a3561..b14658bf46b11906b2722fd18cd9fa35978ac512 100644 (file)
@@ -128,6 +128,8 @@ reloc_done:
 
        str     r1, EXT_C(grub_modbase)
 
+       /* Coreboot already places modules at right place.  */
+#ifndef GRUB_MACHINE_COREBOOT
        add     r1, r1, r2
        add     r0, r0, r2
        sub     r1, r1, #4
@@ -137,6 +139,7 @@ reloc_done:
        str     r3, [r1], #-4                   @ *dst-- = r3 
        subs    r2, #4                          @ remaining -= 4
        bne     1b                              @ while remaining != 0
+#endif
 
        @ Since we _are_ the C run-time, we need to manually zero the BSS
        @ region before continuing
index 9ff3d3be6a7f6338511841c0319862d214e81c4b..3b47a76f1dafc6dcc78182ab8d55dd46e4d96e29 100644 (file)
@@ -36,6 +36,6 @@ void grub_machine_timer_init (void);
 void grub_pl050_init (void);
 #endif /* ! ASM_FILE */
 
-#define GRUB_KERNEL_MACHINE_STACK_SIZE 0x40000
+#define GRUB_KERNEL_MACHINE_STACK_SIZE GRUB_KERNEL_ARM_STACK_SIZE
 
 #endif /* ! GRUB_KERNEL_MACHINE_HEADER */
index df40d2e5615e0b47ef1a621bc59097a8aa8c0e78..e84862285dd9101b463cef1061113ffaf1469c83 100644 (file)
@@ -71,7 +71,8 @@ enum
     GRUB_LINUXBIOS_MEMBER_LINK        = 0x11,
     GRUB_LINUXBIOS_MEMBER_FRAMEBUFFER = 0x12,
     GRUB_LINUXBIOS_MEMBER_TIMESTAMPS  = 0x16,
-    GRUB_LINUXBIOS_MEMBER_CBMEMC      = 0x17
+    GRUB_LINUXBIOS_MEMBER_CBMEMC      = 0x17,
+    GRUB_LINUXBIOS_MEMBER_DTB         = 0x33,
   };
 
 struct grub_linuxbios_table_framebuffer {
index 47025403ab7f21269e58b2e96d5c27e53847ff32..d9c938dddfdd5d37e1f5266ffe19f2b92d076f1b 100644 (file)
 #define GRUB_KERNEL_I386_COREBOOT_MOD_GAP 0x0
 #define GRUB_KERNEL_SPARC64_IEEE1275_MOD_GAP 0x0
 #define GRUB_KERNEL_ARM_UBOOT_MOD_GAP 0x0
-#define GRUB_KERNEL_ARM_COREBOOT_MOD_GAP 0x0
 
 #define GRUB_KERNEL_POWERPC_IEEE1275_MOD_ALIGN 0x1000
 #define GRUB_KERNEL_SPARC64_IEEE1275_LOG_MOD_ALIGN 3
 #define GRUB_KERNEL_ARM_COREBOOT_MOD_ALIGN     0x8
 #define GRUB_KERNEL_ARM_COREBOOT_TOTAL_MODULE_SIZE     0x4
 
+#define GRUB_KERNEL_ARM_STACK_SIZE 0x40000
+#define GRUB_KERNEL_ARM_COREBOOT_MOD_GAP (GRUB_KERNEL_ARM_STACK_SIZE + 1024)
+
 /* Minimal gap between _end and the start of the modules.  It's a hack
    for PowerMac to prevent "CLAIM failed" error.  The real fix is to
    rewrite grub-mkimage to generate valid ELF files.  */
index 134347ab1d34e17c70fb8bc52b3cbf85010c620a..09ea20dde573804d4e2220aa8ebd5bce9bf72fe2 100644 (file)
@@ -548,8 +548,8 @@ 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: Remove once coreboot supports load to any address. */
-      .link_addr = 0x60100000,
+      /* FIXME: Kept only for comaptibility with existing coreboot installs. */
+      .link_addr = 0x43000000,
     },
     {
       .dirname = "arm-efi",