static void reserve_mem(unsigned long base, unsigned long size)
{
unsigned long offset = reloc_offset();
- unsigned long top = base + size;
unsigned long cnt = RELOC(mem_reserve_cnt);
- /* We need to always keep one empty entry so that we
+ if (!size)
+ return;
+
+ base = _ALIGN_DOWN(base, PAGE_SIZE);
+ size = _ALIGN_UP(size, PAGE_SIZE);
+
+ /*
+ * We need to always keep one empty entry so that we
* have our terminator with "size" set to 0 since we are
* dumb and just copy this entire array to the boot params
*/
- base = _ALIGN_DOWN(base, PAGE_SIZE);
- top = _ALIGN_DOWN(top, PAGE_SIZE);
- size = top - base;
-
if (cnt >= (MEM_RESERVE_MAP_SIZE - 1))
prom_panic("Memory reserve map exhausted !\n");
RELOC(mem_reserve_map)[cnt].base = base;