grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH V3 1/3] Update the Linux boot protocol


From: Vladimir 'φ-coder/phcoder' Serbinenko
Subject: Re: [PATCH V3 1/3] Update the Linux boot protocol
Date: Wed, 08 Feb 2012 20:35:09 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20120104 Icedove/8.0

Go ahead.
On 08.02.2012 17:55, Matthew Garrett wrote:
The Linux boot header includes information on the kernel's desired load
address and alignment. Add support for that.
---
  ChangeLog                 |    6 ++++++
  include/grub/i386/linux.h |   28 +++++++++++++++++++++++-----
  2 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ede7f8e..2bdb3a0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-02-08  Matthew Garrett<address@hidden>
+
+       * include/grub/i386/linux.h (linux_kernel_header): Update to
+       boot protocol 2.10.
+       (linux_kernel_params): Likewise
+
  2012-02-07  Vladimir Serbinenko<address@hidden>

        * grub-core/lib/i386/relocator16.S: Revert moving A20 code into PM
diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h
index 6aa2391..8e27b93 100644
--- a/include/grub/i386/linux.h
+++ b/include/grub/i386/linux.h
@@ -86,7 +86,7 @@ enum
      GRUB_VIDEO_LINUX_TYPE_SIMPLE = 0x70    /* Linear framebuffer without any 
additional functions.  */
    };

-/* For the Linux/i386 boot protocol version 2.03.  */
+/* For the Linux/i386 boot protocol version 2.10.  */
  struct linux_kernel_header
  {
    grub_uint8_t code1[0x0020];
@@ -131,8 +131,16 @@ struct linux_kernel_header
    grub_uint32_t initrd_addr_max;        /* Highest address for initrd */
    grub_uint32_t kernel_alignment;
    grub_uint8_t relocatable;
-  grub_uint8_t pad[3];
+  grub_uint8_t min_alignment;
+  grub_uint8_t pad[2];
    grub_uint32_t cmdline_size;
+  grub_uint32_t hardware_subarch;
+  grub_uint64_t hardware_subarch_data;
+  grub_uint32_t payload_offset;
+  grub_uint32_t payload_length;
+  grub_uint64_t setup_data;
+  grub_uint64_t pref_address;
+  grub_uint64_t init_size;
  } __attribute__ ((packed));

  /* Boot parameters for Linux based on 2.6.12. This is used by the setup
@@ -276,10 +284,20 @@ struct linux_kernel_params
    grub_uint32_t ramdisk_size;         /* initrd size */
    grub_uint32_t bootsect_kludge;      /* obsolete */
    grub_uint16_t heap_end_ptr;         /* Free memory after setup end */
-  grub_uint16_t pad1;                  /* Unused */
+  grub_uint8_t ext_loader_ver;         /* Extended loader version */
+  grub_uint8_t ext_loader_type;                /* Extended loader type */
    grub_uint32_t cmd_line_ptr;         /* Points to the kernel command line */
-
-  grub_uint8_t pad2[164];              /* 22c */
+  grub_uint32_t initrd_addr_max;       /* Maximum initrd address */
+  grub_uint32_t kernel_alignment;      /* Alignment of the kernel */
+  grub_uint8_t relocatable_kernel;     /* Is the kernel relocatable */
+  grub_uint8_t pad1[3];
+  grub_uint32_t cmdline_size;          /* Size of the kernel command line */
+  grub_uint32_t hardware_subarch;
+  grub_uint64_t hardware_subarch_data;
+  grub_uint32_t payload_offset;
+  grub_uint32_t payload_length;
+  grub_uint64_t setup_data;
+  grub_uint8_t pad2[120];              /* 258 */
    struct grub_e820_mmap e820_map[GRUB_E820_MAX_ENTRY];        /* 2d0 */

  } __attribute__ ((packed));


--
Regards
Vladimir 'φ-coder/phcoder' Serbinenko




reply via email to

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