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