linux/arch/cris/mm/init.c
<<
>>
Prefs
   1/*
   2 *  linux/arch/cris/mm/init.c
   3 *
   4 *  Copyright (C) 1995  Linus Torvalds
   5 *  Copyright (C) 2000,2001  Axis Communications AB
   6 *
   7 *  Authors:  Bjorn Wesen (bjornw@axis.com)
   8 *
   9 */
  10
  11#include <linux/gfp.h>
  12#include <linux/init.h>
  13#include <linux/bootmem.h>
  14#include <linux/proc_fs.h>
  15#include <linux/kcore.h>
  16#include <asm/tlb.h>
  17#include <asm/sections.h>
  18
  19unsigned long empty_zero_page;
  20EXPORT_SYMBOL(empty_zero_page);
  21
  22void __init mem_init(void)
  23{
  24        BUG_ON(!mem_map);
  25
  26        /* max/min_low_pfn was set by setup.c
  27         * now we just copy it to some other necessary places...
  28         *
  29         * high_memory was also set in setup.c
  30         */
  31        max_mapnr = max_low_pfn - min_low_pfn;
  32        free_all_bootmem();
  33        mem_init_print_info(NULL);
  34}
  35
  36/* Free a range of init pages. Virtual addresses. */
  37
  38void free_init_pages(const char *what, unsigned long begin, unsigned long end)
  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
  54void free_initmem(void)
  55{
  56        free_initmem_default(-1);
  57}
  58
  59/* Free the pages occupied by initrd code. */
  60
  61#ifdef CONFIG_BLK_DEV_INITRD
  62void free_initrd_mem(unsigned long start, unsigned long end)
  63{
  64        free_init_pages("initrd memory",
  65                        start,
  66                        end);
  67}
  68#endif
  69