diff options
Diffstat (limited to 'arch/microblaze/mm/init.c')
-rw-r--r-- | arch/microblaze/mm/init.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c index 65eb00419d19..c8437866d3b7 100644 --- a/arch/microblaze/mm/init.c +++ b/arch/microblaze/mm/init.c | |||
@@ -70,16 +70,16 @@ static void __init paging_init(void) | |||
70 | 70 | ||
71 | void __init setup_memory(void) | 71 | void __init setup_memory(void) |
72 | { | 72 | { |
73 | int i; | ||
74 | unsigned long map_size; | 73 | unsigned long map_size; |
74 | struct memblock_region *reg; | ||
75 | |||
75 | #ifndef CONFIG_MMU | 76 | #ifndef CONFIG_MMU |
76 | u32 kernel_align_start, kernel_align_size; | 77 | u32 kernel_align_start, kernel_align_size; |
77 | 78 | ||
78 | /* Find main memory where is the kernel */ | 79 | /* Find main memory where is the kernel */ |
79 | for (i = 0; i < memblock.memory.cnt; i++) { | 80 | for_each_memblock(memory, reg) { |
80 | memory_start = (u32) memblock.memory.region[i].base; | 81 | memory_start = (u32)reg->base; |
81 | memory_end = (u32) memblock.memory.region[i].base | 82 | memory_end = (u32) reg->base + reg->size; |
82 | + (u32) memblock.memory.region[i].size; | ||
83 | if ((memory_start <= (u32)_text) && | 83 | if ((memory_start <= (u32)_text) && |
84 | ((u32)_text <= memory_end)) { | 84 | ((u32)_text <= memory_end)) { |
85 | memory_size = memory_end - memory_start; | 85 | memory_size = memory_end - memory_start; |
@@ -142,12 +142,10 @@ void __init setup_memory(void) | |||
142 | free_bootmem(memory_start, memory_size); | 142 | free_bootmem(memory_start, memory_size); |
143 | 143 | ||
144 | /* reserve allocate blocks */ | 144 | /* reserve allocate blocks */ |
145 | for (i = 0; i < memblock.reserved.cnt; i++) { | 145 | for_each_memblock(reserved, reg) { |
146 | pr_debug("reserved %d - 0x%08x-0x%08x\n", i, | 146 | pr_debug("reserved - 0x%08x-0x%08x\n", |
147 | (u32) memblock.reserved.region[i].base, | 147 | (u32) reg->base, (u32) reg->size); |
148 | (u32) memblock_size_bytes(&memblock.reserved, i)); | 148 | reserve_bootmem(reg->base, reg->size, BOOTMEM_DEFAULT); |
149 | reserve_bootmem(memblock.reserved.region[i].base, | ||
150 | memblock_size_bytes(&memblock.reserved, i) - 1, BOOTMEM_DEFAULT); | ||
151 | } | 149 | } |
152 | #ifdef CONFIG_MMU | 150 | #ifdef CONFIG_MMU |
153 | init_bootmem_done = 1; | 151 | init_bootmem_done = 1; |
@@ -230,7 +228,7 @@ static void mm_cmdline_setup(void) | |||
230 | if (maxmem && memory_size > maxmem) { | 228 | if (maxmem && memory_size > maxmem) { |
231 | memory_size = maxmem; | 229 | memory_size = maxmem; |
232 | memory_end = memory_start + memory_size; | 230 | memory_end = memory_start + memory_size; |
233 | memblock.memory.region[0].size = memory_size; | 231 | memblock.memory.regions[0].size = memory_size; |
234 | } | 232 | } |
235 | } | 233 | } |
236 | } | 234 | } |
@@ -273,14 +271,14 @@ asmlinkage void __init mmu_init(void) | |||
273 | machine_restart(NULL); | 271 | machine_restart(NULL); |
274 | } | 272 | } |
275 | 273 | ||
276 | if ((u32) memblock.memory.region[0].size < 0x1000000) { | 274 | if ((u32) memblock.memory.regions[0].size < 0x1000000) { |
277 | printk(KERN_EMERG "Memory must be greater than 16MB\n"); | 275 | printk(KERN_EMERG "Memory must be greater than 16MB\n"); |
278 | machine_restart(NULL); | 276 | machine_restart(NULL); |
279 | } | 277 | } |
280 | /* Find main memory where the kernel is */ | 278 | /* Find main memory where the kernel is */ |
281 | memory_start = (u32) memblock.memory.region[0].base; | 279 | memory_start = (u32) memblock.memory.regions[0].base; |
282 | memory_end = (u32) memblock.memory.region[0].base + | 280 | memory_end = (u32) memblock.memory.regions[0].base + |
283 | (u32) memblock.memory.region[0].size; | 281 | (u32) memblock.memory.regions[0].size; |
284 | memory_size = memory_end - memory_start; | 282 | memory_size = memory_end - memory_start; |
285 | 283 | ||
286 | mm_cmdline_setup(); /* FIXME parse args from command line - not used */ | 284 | mm_cmdline_setup(); /* FIXME parse args from command line - not used */ |