memblock: Move memblock_init() to the bottom of the file
[deliverable/linux.git] / mm / memblock.c
index c1d2060e213eface023727e6e71090a4d50d6028..ae856d4e25a37ea71fdc658a667b897508f865e4 100644 (file)
@@ -22,6 +22,8 @@ static int memblock_debug;
 static struct memblock_region memblock_memory_init_regions[INIT_MEMBLOCK_REGIONS + 1];
 static struct memblock_region memblock_reserved_init_regions[INIT_MEMBLOCK_REGIONS + 1];
 
+#define MEMBLOCK_ERROR (~(phys_addr_t)0)
+
 static int __init early_memblock(char *p)
 {
        if (p && strstr(p, "debug"))
@@ -105,33 +107,6 @@ static void memblock_coalesce_regions(struct memblock_type *type,
        memblock_remove_region(type, r2);
 }
 
-void __init memblock_init(void)
-{
-       /* Hookup the initial arrays */
-       memblock.memory.regions = memblock_memory_init_regions;
-       memblock.memory.max             = INIT_MEMBLOCK_REGIONS;
-       memblock.reserved.regions       = memblock_reserved_init_regions;
-       memblock.reserved.max   = INIT_MEMBLOCK_REGIONS;
-
-       /* Write a marker in the unused last array entry */
-       memblock.memory.regions[INIT_MEMBLOCK_REGIONS].base = (phys_addr_t)RED_INACTIVE;
-       memblock.reserved.regions[INIT_MEMBLOCK_REGIONS].base = (phys_addr_t)RED_INACTIVE;
-
-       /* Create a dummy zero size MEMBLOCK which will get coalesced away later.
-        * This simplifies the memblock_add() code below...
-        */
-       memblock.memory.regions[0].base = 0;
-       memblock.memory.regions[0].size = 0;
-       memblock.memory.cnt = 1;
-
-       /* Ditto. */
-       memblock.reserved.regions[0].base = 0;
-       memblock.reserved.regions[0].size = 0;
-       memblock.reserved.cnt = 1;
-
-       memblock.current_limit = MEMBLOCK_ALLOC_ANYWHERE;
-}
-
 void __init memblock_analyze(void)
 {
        int i;
@@ -326,7 +301,7 @@ static phys_addr_t __init memblock_find_region(phys_addr_t start, phys_addr_t en
                base = memblock_align_down(res_base - size, align);
        }
 
-       return ~(phys_addr_t)0;
+       return MEMBLOCK_ERROR;
 }
 
 phys_addr_t __weak __init memblock_nid_range(phys_addr_t start, phys_addr_t end, int *nid)
@@ -353,14 +328,14 @@ static phys_addr_t __init memblock_alloc_nid_region(struct memblock_region *mp,
                this_end = memblock_nid_range(start, end, &this_nid);
                if (this_nid == nid) {
                        phys_addr_t ret = memblock_find_region(start, this_end, size, align);
-                       if (ret != ~(phys_addr_t)0 &&
+                       if (ret != MEMBLOCK_ERROR &&
                            memblock_add_region(&memblock.reserved, ret, size) >= 0)
                                return ret;
                }
                start = this_end;
        }
 
-       return ~(phys_addr_t)0;
+       return MEMBLOCK_ERROR;
 }
 
 phys_addr_t __init memblock_alloc_nid(phys_addr_t size, phys_addr_t align, int nid)
@@ -379,7 +354,7 @@ phys_addr_t __init memblock_alloc_nid(phys_addr_t size, phys_addr_t align, int n
        for (i = 0; i < mem->cnt; i++) {
                phys_addr_t ret = memblock_alloc_nid_region(&mem->regions[i],
                                               size, align, nid);
-               if (ret != ~(phys_addr_t)0)
+               if (ret != MEMBLOCK_ERROR)
                        return ret;
        }
 
@@ -430,7 +405,7 @@ phys_addr_t __init __memblock_alloc_base(phys_addr_t size, phys_addr_t align, ph
                        continue;
                base = min(memblockbase + memblocksize, max_addr);
                res_base = memblock_find_region(memblockbase, base, size, align);
-               if (res_base != ~(phys_addr_t)0 &&
+               if (res_base != MEMBLOCK_ERROR &&
                    memblock_add_region(&memblock.reserved, res_base, size) >= 0)
                        return res_base;
        }
@@ -541,3 +516,30 @@ void __init memblock_set_current_limit(phys_addr_t limit)
        memblock.current_limit = limit;
 }
 
+void __init memblock_init(void)
+{
+       /* Hookup the initial arrays */
+       memblock.memory.regions = memblock_memory_init_regions;
+       memblock.memory.max             = INIT_MEMBLOCK_REGIONS;
+       memblock.reserved.regions       = memblock_reserved_init_regions;
+       memblock.reserved.max   = INIT_MEMBLOCK_REGIONS;
+
+       /* Write a marker in the unused last array entry */
+       memblock.memory.regions[INIT_MEMBLOCK_REGIONS].base = (phys_addr_t)RED_INACTIVE;
+       memblock.reserved.regions[INIT_MEMBLOCK_REGIONS].base = (phys_addr_t)RED_INACTIVE;
+
+       /* Create a dummy zero size MEMBLOCK which will get coalesced away later.
+        * This simplifies the memblock_add() code below...
+        */
+       memblock.memory.regions[0].base = 0;
+       memblock.memory.regions[0].size = 0;
+       memblock.memory.cnt = 1;
+
+       /* Ditto. */
+       memblock.reserved.regions[0].base = 0;
+       memblock.reserved.regions[0].size = 0;
+       memblock.reserved.cnt = 1;
+
+       memblock.current_limit = MEMBLOCK_ALLOC_ANYWHERE;
+}
+
This page took 0.038948 seconds and 5 git commands to generate.