aboutsummaryrefslogtreecommitdiffstats
path: root/arch/frv
diff options
context:
space:
mode:
authorJiang Liu <liuj97@gmail.com>2013-07-03 18:03:55 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 19:07:36 -0400
commit3f2b73c3c3e59cb9b94490d664b2439cd9c540e2 (patch)
tree6e1feb72db842c1e133b0ac4c7f235158d8a0b46 /arch/frv
parent4e422de996da62e933dcc0fd3c2d7fe513cf32a2 (diff)
mm/frv: prepare for removing num_physpages and simplify mem_init()
Prepare for removing num_physpages and simplify mem_init(). Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Cc: David Howells <dhowells@redhat.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/frv')
-rw-r--r--arch/frv/kernel/setup.c13
-rw-r--r--arch/frv/mm/init.c49
2 files changed, 21 insertions, 41 deletions
diff --git a/arch/frv/kernel/setup.c b/arch/frv/kernel/setup.c
index a5136474c6fd..f78f8cb44093 100644
--- a/arch/frv/kernel/setup.c
+++ b/arch/frv/kernel/setup.c
@@ -876,6 +876,7 @@ late_initcall(setup_arch_serial);
876static void __init setup_linux_memory(void) 876static void __init setup_linux_memory(void)
877{ 877{
878 unsigned long bootmap_size, low_top_pfn, kstart, kend, high_mem; 878 unsigned long bootmap_size, low_top_pfn, kstart, kend, high_mem;
879 unsigned long physpages;
879 880
880 kstart = (unsigned long) &__kernel_image_start - PAGE_OFFSET; 881 kstart = (unsigned long) &__kernel_image_start - PAGE_OFFSET;
881 kend = (unsigned long) &__kernel_image_end - PAGE_OFFSET; 882 kend = (unsigned long) &__kernel_image_end - PAGE_OFFSET;
@@ -893,19 +894,19 @@ static void __init setup_linux_memory(void)
893 ); 894 );
894 895
895 /* pass the memory that the kernel can immediately use over to the bootmem allocator */ 896 /* pass the memory that the kernel can immediately use over to the bootmem allocator */
896 max_mapnr = num_physpages = (memory_end - memory_start) >> PAGE_SHIFT; 897 max_mapnr = physpages = (memory_end - memory_start) >> PAGE_SHIFT;
897 low_top_pfn = (KERNEL_LOWMEM_END - KERNEL_LOWMEM_START) >> PAGE_SHIFT; 898 low_top_pfn = (KERNEL_LOWMEM_END - KERNEL_LOWMEM_START) >> PAGE_SHIFT;
898 high_mem = 0; 899 high_mem = 0;
899 900
900 if (num_physpages > low_top_pfn) { 901 if (physpages > low_top_pfn) {
901#ifdef CONFIG_HIGHMEM 902#ifdef CONFIG_HIGHMEM
902 high_mem = num_physpages - low_top_pfn; 903 high_mem = physpages - low_top_pfn;
903#else 904#else
904 max_mapnr = num_physpages = low_top_pfn; 905 max_mapnr = physpages = low_top_pfn;
905#endif 906#endif
906 } 907 }
907 else { 908 else {
908 low_top_pfn = num_physpages; 909 low_top_pfn = physpages;
909 } 910 }
910 911
911 min_low_pfn = memory_start >> PAGE_SHIFT; 912 min_low_pfn = memory_start >> PAGE_SHIFT;
@@ -979,7 +980,7 @@ static void __init setup_uclinux_memory(void)
979 free_bootmem(memory_start, memory_end - memory_start); 980 free_bootmem(memory_start, memory_end - memory_start);
980 981
981 high_memory = (void *) (memory_end & PAGE_MASK); 982 high_memory = (void *) (memory_end & PAGE_MASK);
982 max_mapnr = num_physpages = ((unsigned long) high_memory - PAGE_OFFSET) >> PAGE_SHIFT; 983 max_mapnr = ((unsigned long) high_memory - PAGE_OFFSET) >> PAGE_SHIFT;
983 984
984 min_low_pfn = memory_start >> PAGE_SHIFT; 985 min_low_pfn = memory_start >> PAGE_SHIFT;
985 max_low_pfn = memory_end >> PAGE_SHIFT; 986 max_low_pfn = memory_end >> PAGE_SHIFT;
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c
index 3dcc88803a4f..88a159743528 100644
--- a/arch/frv/mm/init.c
+++ b/arch/frv/mm/init.c
@@ -78,7 +78,7 @@ void __init paging_init(void)
78 memset((void *) empty_zero_page, 0, PAGE_SIZE); 78 memset((void *) empty_zero_page, 0, PAGE_SIZE);
79 79
80#ifdef CONFIG_HIGHMEM 80#ifdef CONFIG_HIGHMEM
81 if (num_physpages - num_mappedpages) { 81 if (get_num_physpages() - num_mappedpages) {
82 pgd_t *pge; 82 pgd_t *pge;
83 pud_t *pue; 83 pud_t *pue;
84 pmd_t *pme; 84 pmd_t *pme;
@@ -96,7 +96,7 @@ void __init paging_init(void)
96 */ 96 */
97 zones_size[ZONE_NORMAL] = max_low_pfn - min_low_pfn; 97 zones_size[ZONE_NORMAL] = max_low_pfn - min_low_pfn;
98#ifdef CONFIG_HIGHMEM 98#ifdef CONFIG_HIGHMEM
99 zones_size[ZONE_HIGHMEM] = num_physpages - num_mappedpages; 99 zones_size[ZONE_HIGHMEM] = get_num_physpages() - num_mappedpages;
100#endif 100#endif
101 101
102 free_area_init(zones_size); 102 free_area_init(zones_size);
@@ -114,45 +114,24 @@ void __init paging_init(void)
114 */ 114 */
115void __init mem_init(void) 115void __init mem_init(void)
116{ 116{
117 unsigned long npages = (memory_end - memory_start) >> PAGE_SHIFT; 117 unsigned long code_size = _etext - _stext;
118 unsigned long tmp;
119#ifdef CONFIG_MMU
120 unsigned long loop, pfn;
121 int datapages = 0;
122#endif
123 int codek = 0, datak = 0;
124 118
125 /* this will put all low memory onto the freelists */ 119 /* this will put all low memory onto the freelists */
126 free_all_bootmem(); 120 free_all_bootmem();
121#if defined(CONFIG_MMU) && defined(CONFIG_HIGHMEM)
122 {
123 unsigned long pfn;
127 124
128#ifdef CONFIG_MMU 125 for (pfn = get_num_physpages() - 1;
129 for (loop = 0 ; loop < npages ; loop++) 126 pfn >= num_mappedpages; pfn--)
130 if (PageReserved(&mem_map[loop])) 127 free_highmem_page(&mem_map[pfn]);
131 datapages++; 128 }
132
133#ifdef CONFIG_HIGHMEM
134 for (pfn = num_physpages - 1; pfn >= num_mappedpages; pfn--)
135 free_highmem_page(&mem_map[pfn]);
136#endif
137
138 codek = ((unsigned long) &_etext - (unsigned long) &_stext) >> 10;
139 datak = datapages << (PAGE_SHIFT - 10);
140
141#else
142 codek = (_etext - _stext) >> 10;
143 datak = 0; //(__bss_stop - _sdata) >> 10;
144#endif 129#endif
145 130
146 tmp = nr_free_pages() << PAGE_SHIFT; 131 mem_init_print_info(NULL);
147 printk("Memory available: %luKiB/%luKiB RAM, %luKiB/%luKiB ROM (%dKiB kernel code, %dKiB data)\n", 132 if (rom_length > 0 && rom_length >= code_size)
148 tmp >> 10, 133 printk("Memory available: %luKiB/%luKiB ROM\n",
149 npages << (PAGE_SHIFT - 10), 134 (rom_length - code_size) >> 10, rom_length >> 10);
150 (rom_length > 0) ? ((rom_length >> 10) - codek) : 0,
151 rom_length >> 10,
152 codek,
153 datak
154 );
155
156} /* end mem_init() */ 135} /* end mem_init() */
157 136
158/*****************************************************************************/ 137/*****************************************************************************/