diff options
Diffstat (limited to 'arch/mips/mm/init.c')
-rw-r--r-- | arch/mips/mm/init.c | 62 |
1 files changed, 21 insertions, 41 deletions
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c index 9b973e0af9cb..4e73f10a7519 100644 --- a/arch/mips/mm/init.c +++ b/arch/mips/mm/init.c | |||
@@ -359,11 +359,24 @@ void __init paging_init(void) | |||
359 | static struct kcore_list kcore_kseg0; | 359 | static struct kcore_list kcore_kseg0; |
360 | #endif | 360 | #endif |
361 | 361 | ||
362 | void __init mem_init(void) | 362 | static inline void mem_init_free_highmem(void) |
363 | { | 363 | { |
364 | unsigned long codesize, reservedpages, datasize, initsize; | 364 | #ifdef CONFIG_HIGHMEM |
365 | unsigned long tmp, ram; | 365 | unsigned long tmp; |
366 | 366 | ||
367 | for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) { | ||
368 | struct page *page = pfn_to_page(tmp); | ||
369 | |||
370 | if (!page_is_ram(tmp)) | ||
371 | SetPageReserved(page); | ||
372 | else | ||
373 | free_highmem_page(page); | ||
374 | } | ||
375 | #endif | ||
376 | } | ||
377 | |||
378 | void __init mem_init(void) | ||
379 | { | ||
367 | #ifdef CONFIG_HIGHMEM | 380 | #ifdef CONFIG_HIGHMEM |
368 | #ifdef CONFIG_DISCONTIGMEM | 381 | #ifdef CONFIG_DISCONTIGMEM |
369 | #error "CONFIG_HIGHMEM and CONFIG_DISCONTIGMEM dont work together yet" | 382 | #error "CONFIG_HIGHMEM and CONFIG_DISCONTIGMEM dont work together yet" |
@@ -374,34 +387,10 @@ void __init mem_init(void) | |||
374 | #endif | 387 | #endif |
375 | high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT); | 388 | high_memory = (void *) __va(max_low_pfn << PAGE_SHIFT); |
376 | 389 | ||
377 | totalram_pages += free_all_bootmem(); | 390 | free_all_bootmem(); |
378 | setup_zero_pages(); /* Setup zeroed pages. */ | 391 | setup_zero_pages(); /* Setup zeroed pages. */ |
379 | 392 | mem_init_free_highmem(); | |
380 | reservedpages = ram = 0; | 393 | mem_init_print_info(NULL); |
381 | for (tmp = 0; tmp < max_low_pfn; tmp++) | ||
382 | if (page_is_ram(tmp) && pfn_valid(tmp)) { | ||
383 | ram++; | ||
384 | if (PageReserved(pfn_to_page(tmp))) | ||
385 | reservedpages++; | ||
386 | } | ||
387 | num_physpages = ram; | ||
388 | |||
389 | #ifdef CONFIG_HIGHMEM | ||
390 | for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) { | ||
391 | struct page *page = pfn_to_page(tmp); | ||
392 | |||
393 | if (!page_is_ram(tmp)) { | ||
394 | SetPageReserved(page); | ||
395 | continue; | ||
396 | } | ||
397 | free_highmem_page(page); | ||
398 | } | ||
399 | num_physpages += totalhigh_pages; | ||
400 | #endif | ||
401 | |||
402 | codesize = (unsigned long) &_etext - (unsigned long) &_text; | ||
403 | datasize = (unsigned long) &_edata - (unsigned long) &_etext; | ||
404 | initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin; | ||
405 | 394 | ||
406 | #ifdef CONFIG_64BIT | 395 | #ifdef CONFIG_64BIT |
407 | if ((unsigned long) &_text > (unsigned long) CKSEG0) | 396 | if ((unsigned long) &_text > (unsigned long) CKSEG0) |
@@ -410,16 +399,6 @@ void __init mem_init(void) | |||
410 | kclist_add(&kcore_kseg0, (void *) CKSEG0, | 399 | kclist_add(&kcore_kseg0, (void *) CKSEG0, |
411 | 0x80000000 - 4, KCORE_TEXT); | 400 | 0x80000000 - 4, KCORE_TEXT); |
412 | #endif | 401 | #endif |
413 | |||
414 | printk(KERN_INFO "Memory: %luk/%luk available (%ldk kernel code, " | ||
415 | "%ldk reserved, %ldk data, %ldk init, %ldk highmem)\n", | ||
416 | nr_free_pages() << (PAGE_SHIFT-10), | ||
417 | ram << (PAGE_SHIFT-10), | ||
418 | codesize >> 10, | ||
419 | reservedpages << (PAGE_SHIFT-10), | ||
420 | datasize >> 10, | ||
421 | initsize >> 10, | ||
422 | totalhigh_pages << (PAGE_SHIFT-10)); | ||
423 | } | 402 | } |
424 | #endif /* !CONFIG_NEED_MULTIPLE_NODES */ | 403 | #endif /* !CONFIG_NEED_MULTIPLE_NODES */ |
425 | 404 | ||
@@ -440,7 +419,8 @@ void free_init_pages(const char *what, unsigned long begin, unsigned long end) | |||
440 | #ifdef CONFIG_BLK_DEV_INITRD | 419 | #ifdef CONFIG_BLK_DEV_INITRD |
441 | void free_initrd_mem(unsigned long start, unsigned long end) | 420 | void free_initrd_mem(unsigned long start, unsigned long end) |
442 | { | 421 | { |
443 | free_reserved_area(start, end, POISON_FREE_INITMEM, "initrd"); | 422 | free_reserved_area((void *)start, (void *)end, POISON_FREE_INITMEM, |
423 | "initrd"); | ||
444 | } | 424 | } |
445 | #endif | 425 | #endif |
446 | 426 | ||