• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  *  linux/arch/cris/mm/init.c
4  *
5  *  Copyright (C) 1995  Linus Torvalds
6  *  Copyright (C) 2000,2001  Axis Communications AB
7  *
8  *  Authors:  Bjorn Wesen (bjornw@axis.com)
9  *
10  */
11 
12 #include <linux/gfp.h>
13 #include <linux/init.h>
14 #include <linux/bootmem.h>
15 #include <linux/proc_fs.h>
16 #include <linux/kcore.h>
17 #include <asm/tlb.h>
18 #include <asm/sections.h>
19 
20 unsigned long empty_zero_page;
21 EXPORT_SYMBOL(empty_zero_page);
22 
mem_init(void)23 void __init mem_init(void)
24 {
25 	BUG_ON(!mem_map);
26 
27 	/* max/min_low_pfn was set by setup.c
28 	 * now we just copy it to some other necessary places...
29 	 *
30 	 * high_memory was also set in setup.c
31 	 */
32 	max_mapnr = max_low_pfn - min_low_pfn;
33         free_all_bootmem();
34 	mem_init_print_info(NULL);
35 }
36 
37 /* Free a range of init pages. Virtual addresses. */
38 
free_init_pages(const char * what,unsigned long begin,unsigned long end)39 void free_init_pages(const char *what, unsigned long begin, unsigned long end)
40 {
41 	unsigned long addr;
42 
43 	for (addr = begin; addr < end; addr += PAGE_SIZE) {
44 		ClearPageReserved(virt_to_page(addr));
45 		init_page_count(virt_to_page(addr));
46 		free_page(addr);
47 		totalram_pages++;
48 	}
49 
50 	printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10);
51 }
52 
53 /* Free the pages occupied by initialization code. */
54 
free_initmem(void)55 void free_initmem(void)
56 {
57 	free_initmem_default(-1);
58 }
59 
60 /* Free the pages occupied by initrd code. */
61 
62 #ifdef CONFIG_BLK_DEV_INITRD
free_initrd_mem(unsigned long start,unsigned long end)63 void free_initrd_mem(unsigned long start, unsigned long end)
64 {
65 	free_init_pages("initrd memory",
66 	                start,
67 	                end);
68 }
69 #endif
70