aboutsummaryrefslogtreecommitdiffstats
path: root/arch/m32r/mm/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/m32r/mm/init.c')
-rw-r--r--arch/m32r/mm/init.c68
1 files changed, 10 insertions, 58 deletions
diff --git a/arch/m32r/mm/init.c b/arch/m32r/mm/init.c
index ab4cbce91a9b..0d4146f644dc 100644
--- a/arch/m32r/mm/init.c
+++ b/arch/m32r/mm/init.c
@@ -40,7 +40,6 @@ unsigned long mmu_context_cache_dat;
40#else 40#else
41unsigned long mmu_context_cache_dat[NR_CPUS]; 41unsigned long mmu_context_cache_dat[NR_CPUS];
42#endif 42#endif
43static unsigned long hole_pages;
44 43
45/* 44/*
46 * function prototype 45 * function prototype
@@ -57,7 +56,7 @@ void free_initrd_mem(unsigned long, unsigned long);
57#define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn) 56#define MAX_LOW_PFN(nid) (NODE_DATA(nid)->bdata->node_low_pfn)
58 57
59#ifndef CONFIG_DISCONTIGMEM 58#ifndef CONFIG_DISCONTIGMEM
60unsigned long __init zone_sizes_init(void) 59void __init zone_sizes_init(void)
61{ 60{
62 unsigned long zones_size[MAX_NR_ZONES] = {0, }; 61 unsigned long zones_size[MAX_NR_ZONES] = {0, };
63 unsigned long max_dma; 62 unsigned long max_dma;
@@ -83,11 +82,9 @@ unsigned long __init zone_sizes_init(void)
83#endif /* CONFIG_MMU */ 82#endif /* CONFIG_MMU */
84 83
85 free_area_init_node(0, zones_size, start_pfn, 0); 84 free_area_init_node(0, zones_size, start_pfn, 0);
86
87 return 0;
88} 85}
89#else /* CONFIG_DISCONTIGMEM */ 86#else /* CONFIG_DISCONTIGMEM */
90extern unsigned long zone_sizes_init(void); 87extern void zone_sizes_init(void);
91#endif /* CONFIG_DISCONTIGMEM */ 88#endif /* CONFIG_DISCONTIGMEM */
92 89
93/*======================================================================* 90/*======================================================================*
@@ -105,24 +102,7 @@ void __init paging_init(void)
105 for (i = 0 ; i < USER_PTRS_PER_PGD * 2 ; i++) 102 for (i = 0 ; i < USER_PTRS_PER_PGD * 2 ; i++)
106 pgd_val(pg_dir[i]) = 0; 103 pgd_val(pg_dir[i]) = 0;
107#endif /* CONFIG_MMU */ 104#endif /* CONFIG_MMU */
108 hole_pages = zone_sizes_init(); 105 zone_sizes_init();
109}
110
111int __init reservedpages_count(void)
112{
113 int reservedpages, nid, i;
114
115 reservedpages = 0;
116 for_each_online_node(nid) {
117 unsigned long flags;
118 pgdat_resize_lock(NODE_DATA(nid), &flags);
119 for (i = 0 ; i < MAX_LOW_PFN(nid) - START_PFN(nid) ; i++)
120 if (PageReserved(nid_page_nr(nid, i)))
121 reservedpages++;
122 pgdat_resize_unlock(NODE_DATA(nid), &flags);
123 }
124
125 return reservedpages;
126} 106}
127 107
128/*======================================================================* 108/*======================================================================*
@@ -131,48 +111,20 @@ int __init reservedpages_count(void)
131 *======================================================================*/ 111 *======================================================================*/
132void __init mem_init(void) 112void __init mem_init(void)
133{ 113{
134 int codesize, reservedpages, datasize, initsize;
135 int nid;
136#ifndef CONFIG_MMU 114#ifndef CONFIG_MMU
137 extern unsigned long memory_end; 115 extern unsigned long memory_end;
138#endif
139
140 num_physpages = 0;
141 for_each_online_node(nid)
142 num_physpages += MAX_LOW_PFN(nid) - START_PFN(nid) + 1;
143
144 num_physpages -= hole_pages;
145 116
146#ifndef CONFIG_DISCONTIGMEM
147 max_mapnr = num_physpages;
148#endif /* CONFIG_DISCONTIGMEM */
149
150#ifdef CONFIG_MMU
151 high_memory = (void *)__va(PFN_PHYS(MAX_LOW_PFN(0)));
152#else
153 high_memory = (void *)(memory_end & PAGE_MASK); 117 high_memory = (void *)(memory_end & PAGE_MASK);
118#else
119 high_memory = (void *)__va(PFN_PHYS(MAX_LOW_PFN(0)));
154#endif /* CONFIG_MMU */ 120#endif /* CONFIG_MMU */
155 121
156 /* clear the zero-page */ 122 /* clear the zero-page */
157 memset(empty_zero_page, 0, PAGE_SIZE); 123 memset(empty_zero_page, 0, PAGE_SIZE);
158 124
159 /* this will put all low memory onto the freelists */ 125 set_max_mapnr(get_num_physpages());
160 for_each_online_node(nid) 126 free_all_bootmem();
161 totalram_pages += free_all_bootmem_node(NODE_DATA(nid)); 127 mem_init_print_info(NULL);
162
163 reservedpages = reservedpages_count() - hole_pages;
164 codesize = (unsigned long) &_etext - (unsigned long)&_text;
165 datasize = (unsigned long) &_edata - (unsigned long)&_etext;
166 initsize = (unsigned long) &__init_end - (unsigned long)&__init_begin;
167
168 printk(KERN_INFO "Memory: %luk/%luk available (%dk kernel code, "
169 "%dk reserved, %dk data, %dk init)\n",
170 nr_free_pages() << (PAGE_SHIFT-10),
171 num_physpages << (PAGE_SHIFT-10),
172 codesize >> 10,
173 reservedpages << (PAGE_SHIFT-10),
174 datasize >> 10,
175 initsize >> 10);
176} 128}
177 129
178/*======================================================================* 130/*======================================================================*
@@ -181,7 +133,7 @@ void __init mem_init(void)
181 *======================================================================*/ 133 *======================================================================*/
182void free_initmem(void) 134void free_initmem(void)
183{ 135{
184 free_initmem_default(0); 136 free_initmem_default(-1);
185} 137}
186 138
187#ifdef CONFIG_BLK_DEV_INITRD 139#ifdef CONFIG_BLK_DEV_INITRD
@@ -191,6 +143,6 @@ void free_initmem(void)
191 *======================================================================*/ 143 *======================================================================*/
192void free_initrd_mem(unsigned long start, unsigned long end) 144void free_initrd_mem(unsigned long start, unsigned long end)
193{ 145{
194 free_reserved_area(start, end, 0, "initrd"); 146 free_reserved_area((void *)start, (void *)end, -1, "initrd");
195} 147}
196#endif 148#endif