|
@@ -2059,8 +2059,7 @@ void __init mem_init(void)
|
|
|
/* We subtract one to account for the mem_map_zero page
|
|
|
* allocated below.
|
|
|
*/
|
|
|
- totalram_pages -= 1;
|
|
|
- num_physpages = totalram_pages;
|
|
|
+ num_physpages = totalram_pages - 1;
|
|
|
|
|
|
/*
|
|
|
* Set up the zero page, mark it reserved, so that page count
|
|
@@ -2071,7 +2070,7 @@ void __init mem_init(void)
|
|
|
prom_printf("paging_init: Cannot alloc zero page.\n");
|
|
|
prom_halt();
|
|
|
}
|
|
|
- SetPageReserved(mem_map_zero);
|
|
|
+ mark_page_reserved(mem_map_zero);
|
|
|
|
|
|
codepages = (((unsigned long) _etext) - ((unsigned long) _start));
|
|
|
codepages = PAGE_ALIGN(codepages) >> PAGE_SHIFT;
|
|
@@ -2111,37 +2110,22 @@ void free_initmem(void)
|
|
|
initend = (unsigned long)(__init_end) & PAGE_MASK;
|
|
|
for (; addr < initend; addr += PAGE_SIZE) {
|
|
|
unsigned long page;
|
|
|
- struct page *p;
|
|
|
|
|
|
page = (addr +
|
|
|
((unsigned long) __va(kern_base)) -
|
|
|
((unsigned long) KERNBASE));
|
|
|
memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE);
|
|
|
|
|
|
- if (do_free) {
|
|
|
- p = virt_to_page(page);
|
|
|
-
|
|
|
- ClearPageReserved(p);
|
|
|
- init_page_count(p);
|
|
|
- __free_page(p);
|
|
|
- totalram_pages++;
|
|
|
- }
|
|
|
+ if (do_free)
|
|
|
+ free_reserved_page(virt_to_page(page));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
|
void free_initrd_mem(unsigned long start, unsigned long end)
|
|
|
{
|
|
|
- if (start < end)
|
|
|
- printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
|
|
|
- for (; start < end; start += PAGE_SIZE) {
|
|
|
- struct page *p = virt_to_page(start);
|
|
|
-
|
|
|
- ClearPageReserved(p);
|
|
|
- init_page_count(p);
|
|
|
- __free_page(p);
|
|
|
- totalram_pages++;
|
|
|
- }
|
|
|
+ num_physpages += free_reserved_area(start, end, POISON_FREE_INITMEM,
|
|
|
+ "initrd");
|
|
|
}
|
|
|
#endif
|
|
|
|