debug(" memory.cnt = 0x%lx\n", lmb->memory.cnt);
debug(" memory.size = 0x%llx\n",
(unsigned long long)lmb->memory.size);
- for (i=0; i < lmb->memory.cnt ;i++) {
+ for (i = 0; i < lmb->memory.cnt; i++) {
debug(" memory.reg[0x%lx].base = 0x%llx\n", i,
- (long long unsigned)lmb->memory.region[i].base);
+ (unsigned long long)lmb->memory.region[i].base);
debug(" .size = 0x%llx\n",
- (long long unsigned)lmb->memory.region[i].size);
+ (unsigned long long)lmb->memory.region[i].size);
}
debug("\n reserved.cnt = 0x%lx\n",
lmb->reserved.cnt);
debug(" reserved.size = 0x%llx\n",
- (long long unsigned)lmb->reserved.size);
- for (i=0; i < lmb->reserved.cnt ;i++) {
+ (unsigned long long)lmb->reserved.size);
+ for (i = 0; i < lmb->reserved.cnt; i++) {
debug(" reserved.reg[0x%lx].base = 0x%llx\n", i,
- (long long unsigned)lmb->reserved.region[i].base);
+ (unsigned long long)lmb->reserved.region[i].base);
debug(" .size = 0x%llx\n",
- (long long unsigned)lmb->reserved.region[i].size);
+ (unsigned long long)lmb->reserved.region[i].size);
}
#endif /* DEBUG */
}
-static long lmb_addrs_overlap(phys_addr_t base1,
- phys_size_t size1, phys_addr_t base2, phys_size_t size2)
+static long lmb_addrs_overlap(phys_addr_t base1, phys_size_t size1,
+ phys_addr_t base2, phys_size_t size2)
{
const phys_addr_t base1_end = base1 + size1 - 1;
const phys_addr_t base2_end = base2 + size2 - 1;
}
static long lmb_addrs_adjacent(phys_addr_t base1, phys_size_t size1,
- phys_addr_t base2, phys_size_t size2)
+ phys_addr_t base2, phys_size_t size2)
{
if (base2 == base1 + size1)
return 1;
return 0;
}
-static long lmb_regions_adjacent(struct lmb_region *rgn,
- unsigned long r1, unsigned long r2)
+static long lmb_regions_adjacent(struct lmb_region *rgn, unsigned long r1,
+ unsigned long r2)
{
phys_addr_t base1 = rgn->region[r1].base;
phys_size_t size1 = rgn->region[r1].size;
}
/* Assumption: base addr of region 1 < base addr of region 2 */
-static void lmb_coalesce_regions(struct lmb_region *rgn,
- unsigned long r1, unsigned long r2)
+static void lmb_coalesce_regions(struct lmb_region *rgn, unsigned long r1,
+ unsigned long r2)
{
rgn->region[r1].size += rgn->region[r2].size;
lmb_remove_region(rgn, r2);
}
/* First try and coalesce this LMB with another. */
- for (i=0; i < rgn->cnt; i++) {
+ for (i = 0; i < rgn->cnt; i++) {
phys_addr_t rgnbase = rgn->region[i].base;
phys_size_t rgnsize = rgn->region[i].size;
/* Already have this region, so we're done */
return 0;
- adjacent = lmb_addrs_adjacent(base,size,rgnbase,rgnsize);
- if ( adjacent > 0 ) {
+ adjacent = lmb_addrs_adjacent(base, size, rgnbase, rgnsize);
+ if (adjacent > 0) {
rgn->region[i].base -= size;
rgn->region[i].size += size;
coalesced++;
break;
- }
- else if ( adjacent < 0 ) {
+ } else if (adjacent < 0) {
rgn->region[i].size += size;
coalesced++;
break;
}
}
- if ((i < rgn->cnt-1) && lmb_regions_adjacent(rgn, i, i+1) ) {
- lmb_coalesce_regions(rgn, i, i+1);
+ if ((i < rgn->cnt - 1) && lmb_regions_adjacent(rgn, i, i + 1)) {
+ lmb_coalesce_regions(rgn, i, i + 1);
coalesced++;
}
/* Couldn't coalesce the LMB, so add it to the sorted table. */
for (i = rgn->cnt-1; i >= 0; i--) {
if (base < rgn->region[i].base) {
- rgn->region[i+1].base = rgn->region[i].base;
- rgn->region[i+1].size = rgn->region[i].size;
+ rgn->region[i + 1].base = rgn->region[i].base;
+ rgn->region[i + 1].size = rgn->region[i].size;
} else {
- rgn->region[i+1].base = base;
- rgn->region[i+1].size = size;
+ rgn->region[i + 1].base = base;
+ rgn->region[i + 1].size = size;
break;
}
}
rgnbegin = rgnend = 0; /* supress gcc warnings */
/* Find the region where (base, size) belongs to */
- for (i=0; i < rgn->cnt; i++) {
+ for (i = 0; i < rgn->cnt; i++) {
rgnbegin = rgn->region[i].base;
rgnend = rgnbegin + rgn->region[i].size - 1;
{
unsigned long i;
- for (i=0; i < rgn->cnt; 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) ) {
+ if (lmb_addrs_overlap(base, size, rgnbase, rgnsize))
break;
- }
}
return (i < rgn->cnt) ? i : -1;
if (alloc == 0)
printf("ERROR: Failed to allocate 0x%lx bytes below 0x%lx.\n",
- (ulong)size, (ulong)max_addr);
+ (ulong)size, (ulong)max_addr);
return alloc;
}
phys_addr_t __lmb_alloc_base(struct lmb *lmb, phys_size_t size, ulong align, phys_addr_t max_addr)
{
- long i, j;
+ long i, rgn;
phys_addr_t base = 0;
phys_addr_t res_base;
- for (i = lmb->memory.cnt-1; i >= 0; i--) {
+ for (i = lmb->memory.cnt - 1; i >= 0; i--) {
phys_addr_t lmbbase = lmb->memory.region[i].base;
phys_size_t lmbsize = lmb->memory.region[i].size;
continue;
while (base && lmbbase <= base) {
- j = lmb_overlaps_region(&lmb->reserved, base, size);
- if (j < 0) {
+ rgn = lmb_overlaps_region(&lmb->reserved, base, size);
+ if (rgn < 0) {
/* This area isn't reserved, take it */
if (lmb_add_region(&lmb->reserved, base,
size) < 0)
return 0;
return base;
}
- res_base = lmb->reserved.region[j].base;
+ res_base = lmb->reserved.region[rgn].base;
if (res_base < size)
break;
base = lmb_align_down(res_base - size, align);
*/
phys_addr_t lmb_alloc_addr(struct lmb *lmb, phys_addr_t base, phys_size_t size)
{
- long j;
+ long rgn;
/* Check if the requested address is in one of the memory regions */
- j = lmb_overlaps_region(&lmb->memory, base, size);
- if (j >= 0) {
+ rgn = lmb_overlaps_region(&lmb->memory, base, size);
+ if (rgn >= 0) {
/*
* Check if the requested end address is in the same memory
* region we found.
*/
- if (lmb_addrs_overlap(lmb->memory.region[j].base,
- lmb->memory.region[j].size, base + size -
- 1, 1)) {
+ if (lmb_addrs_overlap(lmb->memory.region[rgn].base,
+ lmb->memory.region[rgn].size,
+ base + size - 1, 1)) {
/* ok, reserve the memory */
if (lmb_reserve(lmb, base, size) >= 0)
return base;
phys_size_t lmb_get_free_size(struct lmb *lmb, phys_addr_t addr)
{
int i;
- long j;
+ long rgn;
/* check if the requested address is in the memory regions */
- j = lmb_overlaps_region(&lmb->memory, addr, 1);
- if (j >= 0) {
+ rgn = lmb_overlaps_region(&lmb->memory, addr, 1);
+ if (rgn >= 0) {
for (i = 0; i < lmb->reserved.cnt; i++) {
if (addr < lmb->reserved.region[i].base) {
/* first reserved range > requested address */