diff options
| -rw-r--r-- | arch/cris/mm/init.c | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/arch/cris/mm/init.c b/arch/cris/mm/init.c index c81af5bd9167..1e7fd45b60f8 100644 --- a/arch/cris/mm/init.c +++ b/arch/cris/mm/init.c | |||
| @@ -11,13 +11,15 @@ | |||
| 11 | #include <linux/gfp.h> | 11 | #include <linux/gfp.h> |
| 12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
| 13 | #include <linux/bootmem.h> | 13 | #include <linux/bootmem.h> |
| 14 | #include <linux/proc_fs.h> | ||
| 15 | #include <linux/kcore.h> | ||
| 14 | #include <asm/tlb.h> | 16 | #include <asm/tlb.h> |
| 15 | #include <asm/sections.h> | 17 | #include <asm/sections.h> |
| 16 | 18 | ||
| 17 | unsigned long empty_zero_page; | 19 | unsigned long empty_zero_page; |
| 20 | EXPORT_SYMBOL(empty_zero_page); | ||
| 18 | 21 | ||
| 19 | void __init | 22 | void __init mem_init(void) |
| 20 | mem_init(void) | ||
| 21 | { | 23 | { |
| 22 | BUG_ON(!mem_map); | 24 | BUG_ON(!mem_map); |
| 23 | 25 | ||
| @@ -31,10 +33,36 @@ mem_init(void) | |||
| 31 | mem_init_print_info(NULL); | 33 | mem_init_print_info(NULL); |
| 32 | } | 34 | } |
| 33 | 35 | ||
| 34 | /* free the pages occupied by initialization code */ | 36 | /* Free a range of init pages. Virtual addresses. */ |
| 35 | 37 | ||
| 36 | void | 38 | void free_init_pages(const char *what, unsigned long begin, unsigned long end) |
| 37 | free_initmem(void) | 39 | { |
| 40 | unsigned long addr; | ||
| 41 | |||
| 42 | for (addr = begin; addr < end; addr += PAGE_SIZE) { | ||
| 43 | ClearPageReserved(virt_to_page(addr)); | ||
| 44 | init_page_count(virt_to_page(addr)); | ||
| 45 | free_page(addr); | ||
| 46 | totalram_pages++; | ||
| 47 | } | ||
| 48 | |||
| 49 | printk(KERN_INFO "Freeing %s: %ldk freed\n", what, (end - begin) >> 10); | ||
| 50 | } | ||
| 51 | |||
| 52 | /* Free the pages occupied by initialization code. */ | ||
| 53 | |||
| 54 | void free_initmem(void) | ||
| 38 | { | 55 | { |
| 39 | free_initmem_default(-1); | 56 | free_initmem_default(-1); |
| 40 | } | 57 | } |
| 58 | |||
| 59 | /* Free the pages occupied by initrd code. */ | ||
| 60 | |||
| 61 | #ifdef CONFIG_BLK_DEV_INITRD | ||
| 62 | void free_initrd_mem(unsigned long start, unsigned long end) | ||
| 63 | { | ||
| 64 | free_init_pages("initrd memory", | ||
| 65 | start, | ||
| 66 | end); | ||
| 67 | } | ||
| 68 | #endif | ||
