|
@@ -1020,7 +1020,7 @@ static unsigned long __init alloc_up(unsigned long size, unsigned long align)
|
|
|
}
|
|
|
if (addr == 0)
|
|
|
return 0;
|
|
|
- RELOC(alloc_bottom) = addr;
|
|
|
+ RELOC(alloc_bottom) = addr + size;
|
|
|
|
|
|
prom_debug(" -> %x\n", addr);
|
|
|
prom_debug(" alloc_bottom : %x\n", RELOC(alloc_bottom));
|
|
@@ -1830,11 +1830,13 @@ static void __init *make_room(unsigned long *mem_start, unsigned long *mem_end,
|
|
|
if (room > DEVTREE_CHUNK_SIZE)
|
|
|
room = DEVTREE_CHUNK_SIZE;
|
|
|
if (room < PAGE_SIZE)
|
|
|
- prom_panic("No memory for flatten_device_tree (no room)");
|
|
|
+ prom_panic("No memory for flatten_device_tree "
|
|
|
+ "(no room)\n");
|
|
|
chunk = alloc_up(room, 0);
|
|
|
if (chunk == 0)
|
|
|
- prom_panic("No memory for flatten_device_tree (claim failed)");
|
|
|
- *mem_end = RELOC(alloc_top);
|
|
|
+ prom_panic("No memory for flatten_device_tree "
|
|
|
+ "(claim failed)\n");
|
|
|
+ *mem_end = chunk + room;
|
|
|
}
|
|
|
|
|
|
ret = (void *)*mem_start;
|
|
@@ -2042,7 +2044,7 @@ static void __init flatten_device_tree(void)
|
|
|
|
|
|
/*
|
|
|
* Check how much room we have between alloc top & bottom (+/- a
|
|
|
- * few pages), crop to 4Mb, as this is our "chuck" size
|
|
|
+ * few pages), crop to 1MB, as this is our "chunk" size
|
|
|
*/
|
|
|
room = RELOC(alloc_top) - RELOC(alloc_bottom) - 0x4000;
|
|
|
if (room > DEVTREE_CHUNK_SIZE)
|
|
@@ -2053,7 +2055,7 @@ static void __init flatten_device_tree(void)
|
|
|
mem_start = (unsigned long)alloc_up(room, PAGE_SIZE);
|
|
|
if (mem_start == 0)
|
|
|
prom_panic("Can't allocate initial device-tree chunk\n");
|
|
|
- mem_end = RELOC(alloc_top);
|
|
|
+ mem_end = mem_start + room;
|
|
|
|
|
|
/* Get root of tree */
|
|
|
root = call_prom("peer", 1, 1, (phandle)0);
|