Lines Matching refs:base

26 			(long long unsigned)lmb->memory.region[i].base);  in lmb_dump_all()
37 (long long unsigned)lmb->reserved.region[i].base); in lmb_dump_all()
64 phys_addr_t base1 = rgn->region[r1].base; in lmb_regions_adjacent()
66 phys_addr_t base2 = rgn->region[r2].base; in lmb_regions_adjacent()
77 rgn->region[i].base = rgn->region[i + 1].base; in lmb_remove_region()
96 lmb->memory.region[0].base = 0; in lmb_init()
102 lmb->reserved.region[0].base = 0; in lmb_init()
109 static long lmb_add_region(struct lmb_region *rgn, phys_addr_t base, phys_size_t size) in lmb_add_region() argument
115 rgn->region[0].base = base; in lmb_add_region()
122 phys_addr_t rgnbase = rgn->region[i].base; in lmb_add_region()
125 if ((rgnbase == base) && (rgnsize == size)) in lmb_add_region()
129 adjacent = lmb_addrs_adjacent(base,size,rgnbase,rgnsize); in lmb_add_region()
131 rgn->region[i].base -= size; in lmb_add_region()
155 if (base < rgn->region[i].base) { in lmb_add_region()
156 rgn->region[i+1].base = rgn->region[i].base; in lmb_add_region()
159 rgn->region[i+1].base = base; in lmb_add_region()
165 if (base < rgn->region[0].base) { in lmb_add_region()
166 rgn->region[0].base = base; in lmb_add_region()
176 long lmb_add(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_add() argument
180 return lmb_add_region(_rgn, base, size); in lmb_add()
183 long lmb_free(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_free() argument
187 phys_addr_t end = base + size; in lmb_free()
194 rgnbegin = rgn->region[i].base; in lmb_free()
197 if ((rgnbegin <= base) && (end <= rgnend)) in lmb_free()
206 if ((rgnbegin == base) && (rgnend == end)) { in lmb_free()
212 if (rgnbegin == base) { in lmb_free()
213 rgn->region[i].base = end; in lmb_free()
228 rgn->region[i].size = base - rgn->region[i].base; in lmb_free()
232 long lmb_reserve(struct lmb *lmb, phys_addr_t base, phys_size_t size) in lmb_reserve() argument
236 return lmb_add_region(_rgn, base, size); in lmb_reserve()
239 static long lmb_overlaps_region(struct lmb_region *rgn, phys_addr_t base, in lmb_overlaps_region() argument
245 phys_addr_t rgnbase = rgn->region[i].base; in lmb_overlaps_region()
247 if ( lmb_addrs_overlap(base,size,rgnbase,rgnsize) ) { in lmb_overlaps_region()
286 phys_addr_t base = 0; in __lmb_alloc_base() local
290 phys_addr_t lmbbase = lmb->memory.region[i].base; in __lmb_alloc_base()
296 base = lmb_align_down(lmbbase + lmbsize - size, align); in __lmb_alloc_base()
298 base = lmbbase + lmbsize; in __lmb_alloc_base()
299 if (base < lmbbase) in __lmb_alloc_base()
300 base = -1; in __lmb_alloc_base()
301 base = min(base, max_addr); in __lmb_alloc_base()
302 base = lmb_align_down(base - size, align); in __lmb_alloc_base()
306 while (base && lmbbase <= base) { in __lmb_alloc_base()
307 j = lmb_overlaps_region(&lmb->reserved, base, size); in __lmb_alloc_base()
310 if (lmb_add_region(&lmb->reserved, base, in __lmb_alloc_base()
314 return base; in __lmb_alloc_base()
316 res_base = lmb->reserved.region[j].base; in __lmb_alloc_base()
319 base = lmb_align_down(res_base - size, align); in __lmb_alloc_base()
330 phys_addr_t upper = lmb->reserved.region[i].base + in lmb_is_reserved()
332 if ((addr >= lmb->reserved.region[i].base) && (addr <= upper)) in lmb_is_reserved()