- patches.arch/x86_mce_intel_decode_physical_address.patch:
[linux-flexiantxendom0-3.2.10.git] / arch / blackfin / mm / init.c
index 355b87a..bb4e8ff 100644 (file)
 #include "blackfin_sram.h"
 
 /*
- * BAD_PAGE is the page that is used for page faults when linux
- * is out-of-memory. Older versions of linux just did a
- * do_exit(), but using this instead means there is less risk
- * for a process dying in kernel mode, possibly leaving a inode
- * unused etc..
- *
- * BAD_PAGETABLE is the accompanying page-table: it is initialized
- * to point to BAD_PAGE entries.
- *
- * ZERO_PAGE is a special page that is used for zero-initialized
- * data and COW.
+ * ZERO_PAGE is a special page that is used for zero-initialized data and COW.
+ * Let the bss do its zero-init magic so we don't have to do it ourselves.
  */
-static unsigned long empty_bad_page_table;
-
-static unsigned long empty_bad_page;
-
-static unsigned long empty_zero_page;
+char empty_zero_page[PAGE_SIZE] __attribute__((aligned(PAGE_SIZE)));
+EXPORT_SYMBOL(empty_zero_page);
 
 #ifndef CONFIG_EXCEPTION_L1_SCRATCH
 #if defined CONFIG_SYSCALL_TAB_L1
@@ -52,40 +40,26 @@ EXPORT_SYMBOL(cpu_pda);
 void __init paging_init(void)
 {
        /*
-        * make sure start_mem is page aligned,  otherwise bootmem and
-        * page_alloc get different views og the world
+        * make sure start_mem is page aligned, otherwise bootmem and
+        * page_alloc get different views of the world
         */
        unsigned long end_mem = memory_end & PAGE_MASK;
 
-       pr_debug("start_mem is %#lx   virtual_end is %#lx\n", PAGE_ALIGN(memory_start), end_mem);
-
-       /*
-        * initialize the bad page table and bad page to point
-        * to a couple of allocated pages
-        */
-       empty_bad_page_table = (unsigned long)alloc_bootmem_pages(PAGE_SIZE);
-       empty_bad_page = (unsigned long)alloc_bootmem_pages(PAGE_SIZE);
-       empty_zero_page = (unsigned long)alloc_bootmem_pages(PAGE_SIZE);
-       memset((void *)empty_zero_page, 0, PAGE_SIZE);
+       unsigned long zones_size[MAX_NR_ZONES] = {
+               [0] = 0,
+               [ZONE_DMA] = (end_mem - PAGE_OFFSET) >> PAGE_SHIFT,
+               [ZONE_NORMAL] = 0,
+#ifdef CONFIG_HIGHMEM
+               [ZONE_HIGHMEM] = 0,
+#endif
+       };
 
-       /*
-        * Set up SFC/DFC registers (user data space)
-        */
+       /* Set up SFC/DFC registers (user data space) */
        set_fs(KERNEL_DS);
 
-       pr_debug("free_area_init -> start_mem is %#lx   virtual_end is %#lx\n",
+       pr_debug("free_area_init -> start_mem is %#lx virtual_end is %#lx\n",
                PAGE_ALIGN(memory_start), end_mem);
-
-       {
-               unsigned long zones_size[MAX_NR_ZONES] = { 0, };
-
-               zones_size[ZONE_DMA] = (end_mem - PAGE_OFFSET) >> PAGE_SHIFT;
-               zones_size[ZONE_NORMAL] = 0;
-#ifdef CONFIG_HIGHMEM
-               zones_size[ZONE_HIGHMEM] = 0;
-#endif
-               free_area_init(zones_size);
-       }
+       free_area_init(zones_size);
 }
 
 asmlinkage void __init init_pda(void)