+; Multiboot 2 Header\r
+mboot2:\r
+ MULTIBOOT2_HEADER_MAGIC equ 0xE85250D6\r
+ MULTIBOOT2_HEADER_ARCH equ 0\r
+ MULTIBOOT2_HEADER_LENGTH equ (mboot2_end-mboot2)\r
+ MULTIBOOT2_CHECKSUM equ -(MULTIBOOT2_HEADER_MAGIC + MULTIBOOT2_HEADER_ARCH + MULTIBOOT2_HEADER_LENGTH)\r
+ \r
+ dd MULTIBOOT2_HEADER_MAGIC\r
+ dd MULTIBOOT2_HEADER_ARCH\r
+ dd MULTIBOOT2_HEADER_LENGTH\r
+ dd MULTIBOOT2_CHECKSUM\r
+ ; MBoot2 Address Header\r
+ dw 2, 0\r
+ dd 8 + 16\r
+ dd mboot2 ; Location of Multiboot Header\r
+ dd __load_addr - KERNEL_BASE ; Kernel Load base\r
+ dd __bss_start - KERNEL_BASE ; Kernel Data End\r
+ dd gKernelEnd - KERNEL_BASE ; Kernel BSS End\r
+ ; MBoot2 Entry Point Tag\r
+ dw 3, 0\r
+ dd 8 + 4\r
+ dd start - KERNEL_BASE\r
+ ; MBoot2 Module Alignment Tag\r
+ dw 6, 0\r
+ dd 12 ; ???\r
+ dd 0 ; Search me, seems it wants padding\r
+ ; Terminator\r
+ dw 0, 0\r
+ dd 8\r
+mboot2_end:\r
+ \r