long __init lmb_overlaps_region(struct lmb_region *rgn, u64 base, u64 size) { unsigned long i; for (i = 0; i < rgn->cnt; i++) { u64 rgnbase = rgn->region[i].base; u64 rgnsize = rgn->region[i].size; if (lmb_addrs_overlap(base, size, rgnbase, rgnsize)) break; } return (i < rgn->cnt) ? i : -1; }
static long lmb_overlaps_region(struct lmb_region *rgn, phys_addr_t base, phys_size_t size) { unsigned long i; for (i=0; i < rgn->cnt; i++) { phys_addr_t rgnbase = rgn->region[i].base; phys_size_t rgnsize = rgn->region[i].size; if ( lmb_addrs_overlap(base,size,rgnbase,rgnsize) ) { break; } } return (i < rgn->cnt) ? i : -1; }
u64 lmb_abs_to_phys(u64 aa) { u64 i, pa = aa; u64 offset = reloc_offset(); struct lmb *_lmb = PTRRELOC(&lmb); struct lmb_region *_mem = &(_lmb->memory); for (i=0; i < _mem->cnt; i++) { u64 lmbbase = _mem->region[i].base; u64 lmbsize = _mem->region[i].size; if ( lmb_addrs_overlap(aa,1,lmbbase,lmbsize) ) { pa = _mem->region[i].physbase + (aa - lmbbase); break; } } return pa; }