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