Merge branch 'master' into for_paulus
[linux-drm-fsl-dcu.git] / arch / um / kernel / mem.c
index 61280167c560dd63411c105663f93519b5818817..e85d65deea0db9c46f16085c8f168e56e4a475c5 100644 (file)
@@ -24,8 +24,9 @@
 #include "init.h"
 #include "kern_constants.h"
 
-/* Changed during early boot */
+/* allocated in paging_init, zeroed in mem_init, and unchanged thereafter */
 unsigned long *empty_zero_page = NULL;
+/* allocated in paging_init and unchanged thereafter */
 unsigned long *empty_bad_page = NULL;
 pgd_t swapper_pg_dir[PTRS_PER_PGD];
 unsigned long long highmem;
@@ -65,8 +66,8 @@ void mem_init(void)
 {
        max_low_pfn = (high_physmem - uml_physmem) >> PAGE_SHIFT;
 
-        /* clear the zero-page */
-        memset((void *) empty_zero_page, 0, PAGE_SIZE);
+       /* clear the zero-page */
+       memset((void *) empty_zero_page, 0, PAGE_SIZE);
 
        /* Map in the area just after the brk now that kmalloc is about
         * to be turned on.
@@ -79,8 +80,10 @@ void mem_init(void)
 
        /* this will put all low memory onto the freelists */
        totalram_pages = free_all_bootmem();
+#ifdef CONFIG_HIGHMEM
        totalhigh_pages = highmem >> PAGE_SHIFT;
        totalram_pages += totalhigh_pages;
+#endif
        num_physpages = totalram_pages;
        max_pfn = totalram_pages;
        printk(KERN_INFO "Memory: %luk available\n", 
@@ -221,10 +224,14 @@ void paging_init(void)
 
        empty_zero_page = (unsigned long *) alloc_bootmem_low_pages(PAGE_SIZE);
        empty_bad_page = (unsigned long *) alloc_bootmem_low_pages(PAGE_SIZE);
-       for(i=0;i<sizeof(zones_size)/sizeof(zones_size[0]);i++) 
+       for(i = 0; i < ARRAY_SIZE(zones_size); i++)
                zones_size[i] = 0;
-       zones_size[ZONE_DMA] = (end_iomem >> PAGE_SHIFT) - (uml_physmem >> PAGE_SHIFT);
+
+       zones_size[ZONE_NORMAL] = (end_iomem >> PAGE_SHIFT) -
+               (uml_physmem >> PAGE_SHIFT);
+#ifdef CONFIG_HIGHMEM
        zones_size[ZONE_HIGHMEM] = highmem >> PAGE_SHIFT;
+#endif
        free_area_init(zones_size);
 
        /*
@@ -247,8 +254,10 @@ struct page *arch_validate(struct page *page, gfp_t mask, int order)
        int i;
 
  again:
-       if(page == NULL) return(page);
-       if(PageHighMem(page)) return(page);
+       if(page == NULL)
+               return page;
+       if(PageHighMem(page))
+               return page;
 
        addr = (unsigned long) page_address(page);
        for(i = 0; i < (1 << order); i++){
@@ -257,13 +266,15 @@ struct page *arch_validate(struct page *page, gfp_t mask, int order)
                                     sizeof(zero),
                                     &current->thread.fault_addr,
                                     &current->thread.fault_catcher)){
-                       if(!(mask & __GFP_WAIT)) return(NULL);
+                       if(!(mask & __GFP_WAIT))
+                               return NULL;
                        else break;
                }
                addr += PAGE_SIZE;
        }
 
-       if(i == (1 << order)) return(page);
+       if(i == (1 << order))
+               return page;
        page = alloc_pages(mask, order);
        goto again;
 }
@@ -277,7 +288,6 @@ void free_initmem(void)
 }
 
 #ifdef CONFIG_BLK_DEV_INITRD
-
 void free_initrd_mem(unsigned long start, unsigned long end)
 {
        if (start < end)
@@ -290,37 +300,36 @@ void free_initrd_mem(unsigned long start, unsigned long end)
                totalram_pages++;
        }
 }
-       
 #endif
 
 void show_mem(void)
 {
-        int pfn, total = 0, reserved = 0;
-        int shared = 0, cached = 0;
-        int highmem = 0;
+       int pfn, total = 0, reserved = 0;
+       int shared = 0, cached = 0;
+       int highmem = 0;
        struct page *page;
 
-        printk("Mem-info:\n");
-        show_free_areas();
-        printk("Free swap:       %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
-        pfn = max_mapnr;
-        while(pfn-- > 0) {
+       printk("Mem-info:\n");
+       show_free_areas();
+       printk("Free swap:       %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
+       pfn = max_mapnr;
+       while(pfn-- > 0) {
                page = pfn_to_page(pfn);
-                total++;
-                if(PageHighMem(page))
-                        highmem++;
-                if(PageReserved(page))
-                        reserved++;
-                else if(PageSwapCache(page))
-                        cached++;
-                else if(page_count(page))
-                        shared += page_count(page) - 1;
-        }
-        printk("%d pages of RAM\n", total);
-        printk("%d pages of HIGHMEM\n", highmem);
-        printk("%d reserved pages\n", reserved);
-        printk("%d pages shared\n", shared);
-        printk("%d pages swap cached\n", cached);
+               total++;
+               if(PageHighMem(page))
+                       highmem++;
+               if(PageReserved(page))
+                       reserved++;
+               else if(PageSwapCache(page))
+                       cached++;
+               else if(page_count(page))
+                       shared += page_count(page) - 1;
+       }
+       printk("%d pages of RAM\n", total);
+       printk("%d pages of HIGHMEM\n", highmem);
+       printk("%d reserved pages\n", reserved);
+       printk("%d pages shared\n", shared);
+       printk("%d pages swap cached\n", cached);
 }
 
 /*
@@ -356,28 +365,7 @@ pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
 struct page *pte_alloc_one(struct mm_struct *mm, unsigned long address)
 {
        struct page *pte;
-   
+
        pte = alloc_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
        return pte;
 }
-
-struct iomem_region *iomem_regions = NULL;
-int iomem_size = 0;
-
-extern int parse_iomem(char *str, int *add) __init;
-
-__uml_setup("iomem=", parse_iomem,
-"iomem=<name>,<file>\n"
-"    Configure <file> as an IO memory region named <name>.\n\n"
-);
-
-/*
- * Overrides for Emacs so that we follow Linus's tabbing style.
- * Emacs will notice this stuff at the end of the file and automatically
- * adjust the settings for this buffer only.  This must remain at the end
- * of the file.
- * ---------------------------------------------------------------------------
- * Local variables:
- * c-file-style: "linux"
- * End:
- */