---
i386/i386/multiboot2_hdr_asm.h | 33 +++++++++++++++++++++++++++++++++
i386/i386at/boothdr.S | 3 +++
x86_64/boothdr.S | 3 +++
3 files changed, 39 insertions(+)
create mode 100644 i386/i386/multiboot2_hdr_asm.h
diff --git a/i386/i386/multiboot2_hdr_asm.h b/i386/i386/multiboot2_hdr_asm.h
new file mode 100644
index 00000000..ee106cef
--- /dev/null
+++ b/i386/i386/multiboot2_hdr_asm.h
@@ -0,0 +1,33 @@
+#include <mach/machine/multiboot2.h>
+
+/* The multiboot2 header must be 8 byte aligned */
+ P2ALIGN(3)
+multiboot2_hdr:
+ .long MULTIBOOT2_HEADER_MAGIC
+ .long MULTIBOOT2_ARCHITECTURE_I386
+ .long (multiboot2_hdr_end - multiboot2_hdr)
+ .long (0 \
+ - MULTIBOOT2_HEADER_MAGIC \
+ - MULTIBOOT2_ARCHITECTURE_I386 \
+ - (multiboot2_hdr_end - multiboot2_hdr))
+ /* These are the tags that we expect to receive in the
+ information structure. Each tag also needs to be 8 byte
+ aligned with padding if required. */
+ .short MULTIBOOT2_HEADER_TAG_INFORMATION_REQUEST
+ .short 0
+ .long 32
+ .long MULTIBOOT2_TAG_TYPE_MMAP
+ .long MULTIBOOT2_TAG_TYPE_BASIC_MEMINFO
+ .long MULTIBOOT2_TAG_TYPE_CMDLINE
+ .long MULTIBOOT2_TAG_TYPE_MODULE
+ .long MULTIBOOT2_TAG_TYPE_ELF_SECTIONS
+ .long 0 /* alignment */
+ /* Align modules on page boundaries */
+ .short MULTIBOOT2_HEADER_TAG_MODULE_ALIGN
+ .short 0
+ .long 8
+ /* There must always be an 'end' (empty) tag */
+ .short MULTIBOOT2_HEADER_TAG_END
+ .short 0
+ .long 8
+multiboot2_hdr_end:
diff --git a/i386/i386at/boothdr.S b/i386/i386at/boothdr.S
index 560389c2..412caace 100644
--- a/i386/i386at/boothdr.S
+++ b/i386/i386at/boothdr.S
@@ -54,6 +54,9 @@ boot_hdr:
.long 25
.long MULTIBOOT_VIDEO_PARAM_NO_PREFERENCE
+/* Incorporate the multiboot2 header into the boot image. */
+#include <machine/multiboot2_hdr_asm.h>
+
boot_entry:
/* Save the multiboot magic value for later.*/
movl %eax,%edx
diff --git a/x86_64/boothdr.S b/x86_64/boothdr.S
index 943ebca3..8b368190 100644
--- a/x86_64/boothdr.S
+++ b/x86_64/boothdr.S
@@ -52,6 +52,9 @@ boot_hdr:
*/
.long - (MULTIBOOT_MAGIC+MULTIBOOT_FLAGS)
+/* Incorporate the multiboot2 header into the boot image. */
+#include <machine/multiboot2_hdr_asm.h>
+
.global _start
_start:
boot_entry:
--
2.47.3