Great, thanks!

On Mon, Sep 4, 2017, 16:31 Leif Lindholm <leif.lindh...@linaro.org> wrote:

> On Mon, Aug 07, 2017 at 02:07:19PM +0000, Vladimir 'phcoder' Serbinenko
> wrote:
> > Le Thu, Aug 3, 2017 à 12:15 PM, Leif Lindholm <leif.lindh...@linaro.org>
> a
> > écrit :
> >
> > > Use kernel header struct and generic magic definition to align with
> > > arm64/linux loader.
> > >
> > > Signed-off-by: Leif Lindholm <leif.lindh...@linaro.org>
> > > ---
> > >  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
> > > Grub-devel@gnu.org
> > > https://lists.gnu.org/mailman/listinfo/grub-devel
> > >
>
> > _______________________________________________
> > Grub-devel mailing list
> > Grub-devel@gnu.org
> > https://lists.gnu.org/mailman/listinfo/grub-devel
>
>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to