Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git] / arch / sparc / mm / init.c
index 0bcb5c9..c85ddf3 100644 (file)
@@ -7,7 +7,6 @@
  *  Copyright (C) 2000 Anton Blanchard (anton@samba.org)
  */
 
-#include <linux/config.h>
 #include <linux/module.h>
 #include <linux/signal.h>
 #include <linux/sched.h>
 #include <linux/bootmem.h>
 
 #include <asm/system.h>
-#include <asm/segment.h>
 #include <asm/vac-ops.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
 #include <asm/vaddrs.h>
 #include <asm/pgalloc.h>       /* bug in asm-generic/tlb.h: check_pgt_cache */
 #include <asm/tlb.h>
+#include <asm/prom.h>
 
 DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
 
@@ -59,9 +58,6 @@ unsigned long highstart_pfn, highend_pfn;
 pte_t *kmap_pte;
 pgprot_t kmap_prot;
 
-EXPORT_SYMBOL(kmap_prot);
-EXPORT_SYMBOL(kmap_pte);
-
 #define kmap_get_fixmap_pte(vaddr) \
        pte_offset_kernel(pmd_offset(pgd_offset_k(vaddr), (vaddr)), (vaddr))
 
@@ -76,7 +72,7 @@ void show_mem(void)
 {
        printk("Mem-info:\n");
        show_free_areas();
-       printk("Free swap:       %6dkB\n",
+       printk("Free swap:       %6ldkB\n",
               nr_swap_pages << (PAGE_SHIFT-10));
        printk("%ld pages of RAM\n", totalram_pages);
        printk("%d free pages\n", nr_free_pages());
@@ -100,7 +96,7 @@ void __init sparc_context_init(int numctx)
 
                clist = (ctx_list_pool + ctx);
                clist->ctx_number = ctx;
-               clist->ctx_mm = 0;
+               clist->ctx_mm = NULL;
        }
        ctx_free.next = ctx_free.prev = &ctx_free;
        ctx_used.next = ctx_used.prev = &ctx_used;
@@ -353,6 +349,7 @@ void __init paging_init(void)
        protection_map[14] = PAGE_SHARED;
        protection_map[15] = PAGE_SHARED;
        btfixup();
+       prom_build_devicetree();
        device_scan();
 }
 
@@ -387,8 +384,7 @@ void map_high_region(unsigned long start_pfn, unsigned long end_pfn)
                struct page *page = pfn_to_page(tmp);
 
                ClearPageReserved(page);
-               set_bit(PG_highmem, &page->flags);
-               atomic_set(&page->count, 1);
+               init_page_count(page);
                __free_page(page);
                totalhigh_pages++;
        }
@@ -402,8 +398,6 @@ void __init mem_init(void)
        int reservedpages = 0;
        int i;
 
-       highmem_start_page = pfn_to_page(highstart_pfn);
-
        if (PKMAP_BASE+LAST_PKMAP*PAGE_SIZE >= FIXADDR_START) {
                prom_printf("BUG: fixmap and pkmap areas overlap\n");
                prom_printf("pkbase: 0x%lx pkend: 0x%lx fixstart 0x%lx\n",
@@ -487,7 +481,7 @@ void free_initmem (void)
                p = virt_to_page(addr);
 
                ClearPageReserved(p);
-               set_page_count(p, 1);
+               init_page_count(p);
                __free_page(p);
                totalram_pages++;
                num_physpages++;
@@ -504,7 +498,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
                struct page *p = virt_to_page(start);
 
                ClearPageReserved(p);
-               set_page_count(p, 1);
+               init_page_count(p);
                __free_page(p);
                num_physpages++;
        }