X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Falpha%2Fmm%2Finit.c;h=f45b42f695fac0324c2f0e3444f908d513e0a70c;hb=16c70f8c1b54b61c3b951b6fb220df250fe09b32;hp=d02ee459cc9d68781b40abfea68052c84554a677;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c index d02ee459c..f45b42f69 100644 --- a/arch/alpha/mm/init.c +++ b/arch/alpha/mm/init.c @@ -6,7 +6,7 @@ /* 2.3.x zone allocator, 1999 Andrea Arcangeli */ -#include +#include #include #include #include @@ -20,6 +20,7 @@ #include #include /* max_low_pfn */ #include +#include #include #include @@ -42,10 +43,9 @@ pgd_alloc(struct mm_struct *mm) { pgd_t *ret, *init; - ret = (pgd_t *)__get_free_page(GFP_KERNEL); + ret = (pgd_t *)__get_free_page(GFP_KERNEL | __GFP_ZERO); init = pgd_offset(&init_mm, 0UL); if (ret) { - clear_page(ret); #ifdef CONFIG_ALPHA_LARGE_VMALLOC memcpy (ret + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD, (PTRS_PER_PGD - USER_PTRS_PER_PGD - 1)*sizeof(pgd_t)); @@ -63,9 +63,7 @@ pgd_alloc(struct mm_struct *mm) pte_t * pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) { - pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT); - if (pte) - clear_page(pte); + pte_t *pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO); return pte; } @@ -106,7 +104,7 @@ show_mem(void) printk("\nMem-info:\n"); show_free_areas(); - printk("Free swap: %6dkB\n",nr_swap_pages<<(PAGE_SHIFT-10)); + printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10)); i = max_mapnr; while (i-- > 0) { total++; @@ -117,7 +115,7 @@ show_mem(void) else if (!page_count(mem_map+i)) free++; else - shared += atomic_read(&mem_map[i].count) - 1; + shared += page_count(mem_map + i) - 1; } printk("%ld pages of RAM\n",total); printk("%ld free pages\n",free); @@ -152,9 +150,9 @@ switch_to_system_map(void) /* Set the vptb. This is often done by the bootloader, but shouldn't be required. */ - if (hwrpb->vptb != 0xfffffffe00000000) { - wrvptptr(0xfffffffe00000000); - hwrpb->vptb = 0xfffffffe00000000; + if (hwrpb->vptb != 0xfffffffe00000000UL) { + wrvptptr(0xfffffffe00000000UL); + hwrpb->vptb = 0xfffffffe00000000UL; hwrpb_update_checksum(hwrpb); } @@ -301,8 +299,8 @@ srm_paging_stop (void) /* Move the vptb back to where the SRM console expects it. */ swapper_pg_dir[1] = swapper_pg_dir[1023]; tbia(); - wrvptptr(0x200000000); - hwrpb->vptb = 0x200000000; + wrvptptr(0x200000000UL); + hwrpb->vptb = 0x200000000UL; hwrpb_update_checksum(hwrpb); /* Reload the page tables that the console had in use. */ @@ -359,7 +357,7 @@ free_reserved_mem(void *start, void *end) void *__start = start; for (; __start < end; __start += PAGE_SIZE) { ClearPageReserved(virt_to_page(__start)); - set_page_count(virt_to_page(__start), 1); + init_page_count(virt_to_page(__start)); free_page((long)__start); totalram_pages++; }