/* * QEMU BIOS e820 routines * * Copyright (c) 2003-2004 Fabrice Bellard * * SPDX-License-Identifier: MIT */ #ifndef HW_I386_E820_MEMORY_LAYOUT_H #define HW_I386_E820_MEMORY_LAYOUT_H /* e820 types */ #define E820_RAM 1 #define E820_RESERVED 2 #define E820_ACPI 3 #define E820_NVS 4 #define E820_UNUSABLE 5 #define E820_NR_ENTRIES 16 struct e820_entry { uint64_t address; uint64_t length; uint32_t type; } QEMU_PACKED __attribute((__aligned__(4))); struct e820_table { uint32_t count; struct e820_entry entry[E820_NR_ENTRIES]; } QEMU_PACKED __attribute((__aligned__(4))); extern struct e820_table e820_reserve; extern struct e820_entry *e820_table; int e820_add_entry(uint64_t address, uint64_t length, uint32_t type); int e820_get_num_entries(void); bool e820_get_entry(int index, uint32_t type, uint64_t *address, uint64_t *length); #endif