Exemplo n.º 1
0
Arquivo: lmb.c Projeto: 274914765/C
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;
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}