mm: remove include/linux/bootmem.h
[linux-2.6-block.git] / arch / parisc / mm / init.c
index 74842d28a7a16e9deeda1ff3a38446605805b04a..2d7cffcaa476e13016abdd9b5deca4275d537614 100644 (file)
@@ -14,7 +14,6 @@
 
 #include <linux/module.h>
 #include <linux/mm.h>
-#include <linux/bootmem.h>
 #include <linux/memblock.h>
 #include <linux/gfp.h>
 #include <linux/delay.h>
@@ -494,12 +493,8 @@ static void __init map_pages(unsigned long start_vaddr,
                                                pte = pte_mkhuge(pte);
                                }
 
-                               if (address >= end_paddr) {
-                                       if (force)
-                                               break;
-                                       else
-                                               pte_val(pte) = 0;
-                               }
+                               if (address >= end_paddr)
+                                       break;
 
                                set_pte(pg_table, pte);
 
@@ -515,6 +510,19 @@ static void __init map_pages(unsigned long start_vaddr,
        }
 }
 
+void __init set_kernel_text_rw(int enable_read_write)
+{
+       unsigned long start = (unsigned long)__init_begin;
+       unsigned long end   = (unsigned long)_etext;
+
+       map_pages(start, __pa(start), end-start,
+               PAGE_KERNEL_RWX, enable_read_write ? 1:0);
+
+       /* force the kernel to see the new page table entries */
+       flush_cache_all();
+       flush_tlb_all();
+}
+
 void __ref free_initmem(void)
 {
        unsigned long init_begin = (unsigned long)__init_begin;
@@ -612,7 +620,7 @@ void __init mem_init(void)
 
        high_memory = __va((max_pfn << PAGE_SHIFT));
        set_max_mapnr(page_to_pfn(virt_to_page(high_memory - 1)) + 1);
-       free_all_bootmem();
+       memblock_free_all();
 
 #ifdef CONFIG_PA11
        if (boot_cpu_data.cpu_type == pcxl2 || boot_cpu_data.cpu_type == pcxl) {