|
@@ -611,6 +611,22 @@ unsigned long __init_refok init_memory_mapping(unsigned long start, unsigned lon
|
|
|
}
|
|
|
|
|
|
#ifndef CONFIG_NUMA
|
|
|
+void __init initmem_init(unsigned long start_pfn, unsigned long end_pfn)
|
|
|
+{
|
|
|
+ unsigned long bootmap_size, bootmap;
|
|
|
+
|
|
|
+ bootmap_size = bootmem_bootmap_pages(end_pfn)<<PAGE_SHIFT;
|
|
|
+ bootmap = find_e820_area(0, end_pfn<<PAGE_SHIFT, bootmap_size,
|
|
|
+ PAGE_SIZE);
|
|
|
+ if (bootmap == -1L)
|
|
|
+ panic("Cannot find bootmem map of size %ld\n", bootmap_size);
|
|
|
+ bootmap_size = init_bootmem(bootmap >> PAGE_SHIFT, end_pfn);
|
|
|
+ e820_register_active_regions(0, start_pfn, end_pfn);
|
|
|
+ free_bootmem_with_active_regions(0, end_pfn);
|
|
|
+ early_res_to_bootmem(0, end_pfn<<PAGE_SHIFT);
|
|
|
+ reserve_bootmem(bootmap, bootmap_size, BOOTMEM_DEFAULT);
|
|
|
+}
|
|
|
+
|
|
|
void __init paging_init(void)
|
|
|
{
|
|
|
unsigned long max_zone_pfns[MAX_NR_ZONES];
|