]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - wimboot/wimboot-2.7.3/src/memmap.h
1.1.07 release
[Ventoy.git] / wimboot / wimboot-2.7.3 / src / memmap.h
1 #ifndef _MEMMAP_H
2 #define _MEMMAP_H
3
4 /*
5 * Copyright (C) 2021 Michael Brown <mbrown@fensystems.co.uk>.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation; either version 2 of the
10 * License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20 * 02110-1301, USA.
21 */
22
23 /**
24 * @file
25 *
26 * Memory map
27 *
28 */
29
30 #include <stdint.h>
31
32 /** Magic value for INT 15,e820 calls */
33 #define E820_SMAP 0x534d4150
34
35 /** An INT 15,e820 memory map entry */
36 struct e820_entry {
37 /** Start of region */
38 uint64_t start;
39 /** Length of region */
40 uint64_t len;
41 /** Type of region */
42 uint32_t type;
43 /** Extended attributes (optional) */
44 uint32_t attrs;
45 } __attribute__ (( packed ));
46
47 /** Normal RAM */
48 #define E820_TYPE_RAM 1
49
50 /** Region is enabled (if extended attributes are present) */
51 #define E820_ATTR_ENABLED 0x00000001UL
52
53 /** Region is non-volatile memory (if extended attributes are present) */
54 #define E820_ATTR_NONVOLATILE 0x00000002UL
55
56 extern struct e820_entry * memmap_next ( struct e820_entry *prev );
57
58 #endif /* _MEMMAP_H */