xref: /kvm-unit-tests/lib/memregions.h (revision 6b801c8981f74d75419d77e031dd37f5ad356efe)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 #ifndef _MEMREGIONS_H_
3 #define _MEMREGIONS_H_
4 #include <libcflat.h>
5 #include <bitops.h>
6 
7 #define NR_INITIAL_MEM_REGIONS		8
8 
9 #define MR_F_IO				BIT(0)
10 #define MR_F_CODE			BIT(1)
11 #define MR_F_RESERVED			BIT(2)
12 #define MR_F_PERSISTENT			BIT(3)
13 #define MR_F_UNUSED			BIT(4)
14 #define MR_F_UNKNOWN			BIT(31)
15 
16 struct mem_region {
17 	phys_addr_t start;
18 	phys_addr_t end;
19 	uint32_t flags;
20 };
21 
22 extern struct mem_region *mem_regions;
23 
24 void memregions_init(struct mem_region regions[], size_t nr);
25 struct mem_region *memregions_add(struct mem_region *r);
26 struct mem_region *memregions_find(phys_addr_t paddr);
27 uint32_t memregions_get_flags(phys_addr_t paddr);
28 void memregions_split(phys_addr_t addr, struct mem_region **r1, struct mem_region **r2);
29 void memregions_add_dt_regions(size_t max_nr);
30 
31 #ifdef CONFIG_EFI
32 #include <efi.h>
33 void memregions_efi_init(struct efi_boot_memmap *mem_map, struct mem_region **freemem);
34 #endif
35 
36 #endif /* _MEMREGIONS_H_ */
37