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 20unsigned long empty_zero_page; 21EXPORT_SYMBOL(empty_zero_page); 22 23void __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 39void 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 55void 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 63void free_initrd_mem(unsigned long start, unsigned long end) 64{ 65 free_init_pages("initrd memory", 66 start, 67 end); 68} 69#endif 70