Also change the name from "relocatable header tag" to "kernel relocatable tag" to make it less confusing. These two tags are independent from each other.
Signed-off-by: Zide Chen <zide.c...@intel.com> --- doc/multiboot.texi | 51 +++++++++++++++++++++++++++++++++++++++++----- doc/multiboot2.h | 11 ++++++++++ 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/doc/multiboot.texi b/doc/multiboot.texi index df8a0d056e76..bf0150dc86a0 100644 --- a/doc/multiboot.texi +++ b/doc/multiboot.texi @@ -355,7 +355,8 @@ executable header. * Console header tags:: * Module alignment tag:: * EFI boot services tag:: -* Relocatable header tag:: +* Kernel relocatable tag:: +* Module relocatable tag:: @end menu @@ -691,8 +692,8 @@ u32 | size = 8 | This tag indicates that payload supports starting without terminating boot services. -@node Relocatable header tag -@subsection Relocatable header tag +@node Kernel relocatable tag +@subsection Kernel relocatable tag @example @group @@ -708,7 +709,7 @@ u32 | preference | @end group @end example -This tag indicates that image is relocatable. +This tag indicates that kernel image is relocatable. The meaning of each field is as follows: @@ -730,6 +731,46 @@ Boot loader should follow it. @samp{0} means none, @samp{1} means load image at lowest possible address but not lower than min_addr and @samp{2} means load image at highest possible address but not higher than max_addr. + +@node Module relocatable tag +@subsection Module relocatable tag + +@example +@group + +-------------------+ +u16 | type = 11 | +u16 | flags | +u32 | size = 20 | +u32 | min_addr | +u32 | max_addr | +u32 | preference | + +-------------------+ +@end group +@end example + +This tag is independent to the kernel relocatable tag. All of the +address fields in this tag are physical addresses. + +The meaning of each field is as follows: + +@table @code +@item min_addr +Lowest possible physical address at which any modules should be +loaded. The bootloader cannot load any part of any modules below +this address. + +@item max_addr +Highest possible physical address at which any loaded modules should +end. The bootloader cannot load any part of any modules above this +address. + +@item preference +It contains load address placement suggestion for Multiboot2 modules +Boot loader should follow it. @samp{0} means load modules not lower +than min_addr, and not higher than max_addr, but no preference on either +lower or higher address; @samp{1} means load modules at lowest possible +address but not lower than min_addr; @samp{2} means load modules at +highest possible address but not higher than max_addr. @end table @node Machine state @@ -1399,7 +1440,7 @@ u32 | load_base_addr | @end example This tag contains image load base physical address. It is -provided only if image has relocatable header tag. +provided only if image has kernel relocatable tag. @node Examples @chapter Examples diff --git a/doc/multiboot2.h b/doc/multiboot2.h index b181607075b2..d97d10c2691a 100644 --- a/doc/multiboot2.h +++ b/doc/multiboot2.h @@ -75,6 +75,7 @@ #define MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI32 8 #define MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI64 9 #define MULTIBOOT_HEADER_TAG_RELOCATABLE 10 +#define MULTIBOOT_HEADER_TAG_MODULE_RELOCATABLE 11 #define MULTIBOOT_ARCHITECTURE_I386 0 #define MULTIBOOT_ARCHITECTURE_MIPS32 4 @@ -179,6 +180,16 @@ struct multiboot_header_tag_relocatable multiboot_uint32_t preference; }; +struct multiboot_header_tag_module_relocatable +{ + multiboot_uint16_t type; + multiboot_uint16_t flags; + multiboot_uint32_t size; + multiboot_uint32_t min_addr; + multiboot_uint32_t max_addr; + multiboot_uint32_t preference; +}; + struct multiboot_color { multiboot_uint8_t red; -- 2.17.1 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel