--- orig/arch/ppc/mm/init.c +++ mod/arch/ppc/mm/init.c @@ -388,6 +388,10 @@ free_area_init(zones_size); } +#ifdef CONFIG_HIGHMEM +unsigned long highstart_pfn; +#endif + void __init mem_init(void) { unsigned long addr; @@ -395,10 +399,9 @@ int datapages = 0; int initpages = 0; #ifdef CONFIG_HIGHMEM - unsigned long highmem_mapnr; - highmem_mapnr = total_lowmem >> PAGE_SHIFT; - highmem_start_page = mem_map + highmem_mapnr; + highstart_pfn = total_lowmem >> PAGE_SHIFT; + highmem_start_page = mem_map + highstart_pfn; #endif /* CONFIG_HIGHMEM */ max_mapnr = total_memory >> PAGE_SHIFT; @@ -451,7 +454,7 @@ { unsigned long pfn; - for (pfn = highmem_mapnr; pfn < max_mapnr; ++pfn) { + for (pfn = highstart_pfn; pfn < max_mapnr; ++pfn) { struct page *page = mem_map + pfn; ClearPageReserved(page);