Lines Matching refs:mr

69 fdt_memory_range_free(struct fdt_memory_range *mr)  in fdt_memory_range_free()  argument
71 mr->mr_used = false; in fdt_memory_range_free()
183 struct fdt_memory_range *mr, *prev, *cur, *tmp; in fdt_memory_add_range() local
186 mr = fdt_memory_range_alloc(); in fdt_memory_add_range()
187 if (mr == NULL) in fdt_memory_add_range()
190 mr->mr_mem.start = start; in fdt_memory_add_range()
191 mr->mr_mem.end = start + size; in fdt_memory_add_range()
197 if (mr->mr_mem.start <= cur->mr_mem.start) { in fdt_memory_add_range()
198 TAILQ_INSERT_BEFORE(cur, mr, mr_list); in fdt_memory_add_range()
203 TAILQ_INSERT_TAIL(&fdt_memory_ranges, mr, mr_list); in fdt_memory_add_range()
208 TAILQ_FOREACH_SAFE(mr, &fdt_memory_ranges, mr_list, tmp) { in fdt_memory_add_range()
209 prev = TAILQ_PREV(mr, fdt_memory_rangehead, mr_list); in fdt_memory_add_range()
210 if (prev && prev->mr_mem.end > mr->mr_mem.start) { in fdt_memory_add_range()
211 mr->mr_mem.start = prev->mr_mem.end; in fdt_memory_add_range()
212 if (mr->mr_mem.start >= mr->mr_mem.end) { in fdt_memory_add_range()
213 TAILQ_REMOVE(&fdt_memory_ranges, mr, mr_list); in fdt_memory_add_range()
214 fdt_memory_range_free(mr); in fdt_memory_add_range()
222 TAILQ_FOREACH_SAFE(mr, &fdt_memory_ranges, mr_list, tmp) { in fdt_memory_add_range()
223 prev = TAILQ_PREV(mr, fdt_memory_rangehead, mr_list); in fdt_memory_add_range()
224 if (prev && prev->mr_mem.end == mr->mr_mem.start) { in fdt_memory_add_range()
225 prev->mr_mem.end = mr->mr_mem.end; in fdt_memory_add_range()
226 TAILQ_REMOVE(&fdt_memory_ranges, mr, mr_list); in fdt_memory_add_range()
227 fdt_memory_range_free(mr); in fdt_memory_add_range()
235 struct fdt_memory_range *mr, *next, *tmp; in fdt_memory_remove_range() local
238 TAILQ_FOREACH_SAFE(mr, &fdt_memory_ranges, mr_list, tmp) { in fdt_memory_remove_range()
239 if (start <= mr->mr_mem.start && end >= mr->mr_mem.end) { in fdt_memory_remove_range()
244 TAILQ_REMOVE(&fdt_memory_ranges, mr, mr_list); in fdt_memory_remove_range()
245 fdt_memory_range_free(mr); in fdt_memory_remove_range()
246 } else if (start > mr->mr_mem.start && end < mr->mr_mem.end) { in fdt_memory_remove_range()
255 next->mr_mem.end = mr->mr_mem.end; in fdt_memory_remove_range()
256 mr->mr_mem.end = start; in fdt_memory_remove_range()
257 TAILQ_INSERT_AFTER(&fdt_memory_ranges, mr, next, mr_list); in fdt_memory_remove_range()
258 } else if (start <= mr->mr_mem.start && end > mr->mr_mem.start && end < mr->mr_mem.end) { in fdt_memory_remove_range()
262 mr->mr_mem.start = end; in fdt_memory_remove_range()
263 } else if (start > mr->mr_mem.start && start < mr->mr_mem.end && end >= mr->mr_mem.end) { in fdt_memory_remove_range()
267 mr->mr_mem.end = start; in fdt_memory_remove_range()
269 KASSERT(mr->mr_mem.start < mr->mr_mem.end); in fdt_memory_remove_range()
276 struct fdt_memory_range *mr; in fdt_memory_foreach() local
278 TAILQ_FOREACH(mr, &fdt_memory_ranges, mr_list) in fdt_memory_foreach()
279 fn(&mr->mr_mem, arg); in fdt_memory_foreach()