Index: utility/include/kernel_blob.h |
diff --git a/utility/include/kernel_blob.h b/utility/include/kernel_blob.h |
index d5256aa8266afd624f2ca76ae836da0ae5c451fb..e8f813eb0cf8023eae25fe52f71c09cc9deb6f70 100644 |
--- a/utility/include/kernel_blob.h |
+++ b/utility/include/kernel_blob.h |
@@ -28,22 +28,35 @@ struct linux_kernel_header |
uint8_t pad1[0x0230 - 0x1f2]; |
} __attribute__ ((packed)); |
+// Simplified version of x86 kernel e820 memory map entries |
+#define E820_ENTRY_MAX 128 |
+#define E820_TYPE_RAM 1 |
+#define E820_TYPE_RESERVED 2 |
+ |
+struct linux_kernel_e820entry { |
+ uint64_t start_addr; |
+ uint64_t segment_size; |
+ uint32_t segment_type; |
+} __attribute__((packed)); |
// Simplified version of the x86 kernel zeropage table |
struct linux_kernel_params |
{ |
- uint8_t pad0[0x01f1 - 0x0]; |
+ uint8_t pad0[0x1e8 - 0x0]; |
+ uint8_t n_e820_entry; // 1e8 |
+ uint8_t pad1[0x1f1 - 0x1e9]; |
uint8_t setup_sects; // 1f1 |
- uint8_t pad1[0x1fe - 0x1f2]; |
+ uint8_t pad2[0x1fe - 0x1f2]; |
uint16_t boot_flag; // 1fe |
- uint8_t pad2[0x210 - 0x200]; |
+ uint8_t pad3[0x210 - 0x200]; |
uint8_t type_of_loader; // 210 |
- uint8_t pad3[0x218 - 0x211]; |
+ uint8_t pad4[0x218 - 0x211]; |
uint32_t ramdisk_image; // 218 |
- uint32_t ramdisk_size; // 21c |
- uint8_t pad4[0x228 - 0x220]; |
+ uint32_t ramdisk_size; // 21c |
+ uint8_t pad5[0x228 - 0x220]; |
uint32_t cmd_line_ptr; // 228 |
- uint8_t pad5[0x0cd0 - 0x22c]; |
+ uint8_t pad6[0x2d0 - 0x22c]; |
+ struct linux_kernel_e820entry e820_entries[E820_ENTRY_MAX]; // 2d0 - cd0 |
} __attribute__ ((packed)); |