1 /* 2 * QEMU BIOS e820 routines 3 * 4 * Copyright (c) 2003-2004 Fabrice Bellard 5 * 6 * SPDX-License-Identifier: MIT 7 */ 8 9 #ifndef HW_I386_E820_MEMORY_LAYOUT_H 10 #define HW_I386_E820_MEMORY_LAYOUT_H 11 12 /* e820 types */ 13 #define E820_RAM 1 14 #define E820_RESERVED 2 15 #define E820_ACPI 3 16 #define E820_NVS 4 17 #define E820_UNUSABLE 5 18 19 #define E820_NR_ENTRIES 16 20 21 struct e820_entry { 22 uint64_t address; 23 uint64_t length; 24 uint32_t type; 25 } QEMU_PACKED __attribute((__aligned__(4))); 26 27 struct e820_table { 28 uint32_t count; 29 struct e820_entry entry[E820_NR_ENTRIES]; 30 } QEMU_PACKED __attribute((__aligned__(4))); 31 32 extern struct e820_table e820_reserve; 33 extern struct e820_entry *e820_table; 34 35 int e820_add_entry(uint64_t address, uint64_t length, uint32_t type); 36 int e820_get_num_entries(void); 37 bool e820_get_entry(int index, uint32_t type, 38 uint64_t *address, uint64_t *length); 39 40 41 42 #endif 43