xref: /kvm-unit-tests/lib/memregions.h (revision 2479ae507a7e89903c067d89b476bb27e48875fe)
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_UNKNOWN			BIT(31)
13 
14 struct mem_region {
15 	phys_addr_t start;
16 	phys_addr_t end;
17 	uint32_t flags;
18 };
19 
20 extern struct mem_region *mem_regions;
21 
22 void memregions_init(struct mem_region regions[], size_t nr);
23 struct mem_region *memregions_add(struct mem_region *r);
24 struct mem_region *memregions_find(phys_addr_t paddr);
25 uint32_t memregions_get_flags(phys_addr_t paddr);
26 void memregions_split(phys_addr_t addr, struct mem_region **r1, struct mem_region **r2);
27 void memregions_add_dt_regions(size_t max_nr);
28 
29 #endif /* _MEMREGIONS_H_ */
30