Home | History | Annotate | Download | only in fdt

Lines Matching defs:mr

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