grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 10/14] loader: switch arm/linux to grub_linux_kernel_heade


From: Leif Lindholm
Subject: Re: [PATCH v2 10/14] loader: switch arm/linux to grub_linux_kernel_header struct
Date: Mon, 4 Sep 2017 15:31:12 +0100
User-agent: NeoMutt/20170113 (1.7.2)

On Mon, Aug 07, 2017 at 02:07:19PM +0000, Vladimir 'phcoder' Serbinenko wrote:
> Le Thu, Aug 3, 2017 à 12:15 PM, Leif Lindholm <address@hidden> a
> écrit :
> 
> > Use kernel header struct and generic magic definition to align with
> > arm64/linux loader.
> >
> > Signed-off-by: Leif Lindholm <address@hidden>
> > ---
> >  grub-core/loader/arm/linux.c | 11 +++++------
> >  include/grub/arm/linux.h     | 15 ++++++++++++---
> >  2 files changed, 17 insertions(+), 9 deletions(-)
> >
> > diff --git a/grub-core/loader/arm/linux.c b/grub-core/loader/arm/linux.c
> > index e64c79a95..067f69894 100644
> > --- a/grub-core/loader/arm/linux.c
> > +++ b/grub-core/loader/arm/linux.c
> > @@ -46,9 +46,6 @@ static const void *current_fdt;
> >
> >  typedef void (*kernel_entry_t) (int, unsigned long, void *);
> >
> > -#define LINUX_ZIMAGE_OFFSET    0x24
> > -#define LINUX_ZIMAGE_MAGIC     0x016f2818
> > -
> >  #define LINUX_PHYS_OFFSET        (0x00008000)
> >  #define LINUX_INITRD_PHYS_OFFSET (LINUX_PHYS_OFFSET + 0x02000000)
> >  #define LINUX_FDT_PHYS_OFFSET    (LINUX_INITRD_PHYS_OFFSET - 0x10000)
> > @@ -315,6 +312,7 @@ linux_boot (void)
> >  static grub_err_t
> >  linux_load (const char *filename, grub_file_t file)
> >  {
> > +  struct grub_linux_kernel_header *lh;
> >    int size;
> >
> >    size = grub_file_size (file);
> > @@ -337,9 +335,10 @@ linux_load (const char *filename, grub_file_t file)
> >        return grub_errno;
> >      }
> >
> > -  if (size > LINUX_ZIMAGE_OFFSET + 4
> > -      && *(grub_uint32_t *) (linux_addr + LINUX_ZIMAGE_OFFSET)
> > -      == LINUX_ZIMAGE_MAGIC)
> > +  lh = (void *) linux_addr;
> > +
> > +  if ((grub_size_t) size > sizeof (*lh) &&
> > +      lh->magic == GRUB_LINUX_MAGIC_SIGNATURE)
> >      ;
> >    else if (size > 0x8000 && *(grub_uint32_t *) (linux_addr) == 0xea000006
> >            && machine_type == GRUB_ARM_MACHINE_TYPE_RASPBERRY_PI)
> > diff --git a/include/grub/arm/linux.h b/include/grub/arm/linux.h
> > index f217f8281..802090239 100644
> > --- a/include/grub/arm/linux.h
> > +++ b/include/grub/arm/linux.h
> > @@ -20,11 +20,20 @@
> >  #ifndef GRUB_LINUX_CPU_HEADER
> >  #define GRUB_LINUX_CPU_HEADER 1
> >
> > -#define LINUX_ZIMAGE_OFFSET 0x24
> > -#define LINUX_ZIMAGE_MAGIC  0x016f2818
> > -
> >  #include "system.h"
> >
> > +#define GRUB_LINUX_MAGIC_SIGNATURE 0x016f2818
> > +
> > +struct grub_linux_kernel_header {
> >
> This maz clash with other architectures preventing including several
> architecture files in the same file. We need it to create tools like
> grub-file .

Right, then I do need to inject some patches renaming this struct and
signature on x86 too.

/
    Leif

> > +  grub_uint32_t code0;
> > +  grub_uint32_t reserved1[8];
> > +  grub_uint32_t magic;
> > +  grub_uint32_t start; /* _start */
> > +  grub_uint32_t end;   /* _edata */
> > +  grub_uint32_t reserved2[4];
> > +  grub_uint32_t hdr_offset;
> > +};
> > +
> >  #if defined GRUB_MACHINE_UBOOT
> >  # include <grub/uboot/uboot.h>
> >  # define LINUX_ADDRESS        (start_of_ram + 0x8000)
> > --
> > 2.11.0
> >
> >
> > _______________________________________________
> > Grub-devel mailing list
> > address@hidden
> > https://lists.gnu.org/mailman/listinfo/grub-devel
> >

> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel




reply via email to

[Prev in Thread] Current Thread [Next in Thread]