Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/cris/mm/init.c
10817 views
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 ([email protected])
8
*
9
*/
10
11
#include <linux/gfp.h>
12
#include <linux/init.h>
13
#include <linux/bootmem.h>
14
#include <asm/tlb.h>
15
16
unsigned long empty_zero_page;
17
18
extern char _stext, _edata, _etext; /* From linkerscript */
19
extern char __init_begin, __init_end;
20
21
void __init
22
mem_init(void)
23
{
24
int codesize, reservedpages, datasize, initsize;
25
unsigned long tmp;
26
27
BUG_ON(!mem_map);
28
29
/* max/min_low_pfn was set by setup.c
30
* now we just copy it to some other necessary places...
31
*
32
* high_memory was also set in setup.c
33
*/
34
35
max_mapnr = num_physpages = max_low_pfn - min_low_pfn;
36
37
/* this will put all memory onto the freelists */
38
totalram_pages = free_all_bootmem();
39
40
reservedpages = 0;
41
for (tmp = 0; tmp < max_mapnr; tmp++) {
42
/*
43
* Only count reserved RAM pages
44
*/
45
if (PageReserved(mem_map + tmp))
46
reservedpages++;
47
}
48
49
codesize = (unsigned long) &_etext - (unsigned long) &_stext;
50
datasize = (unsigned long) &_edata - (unsigned long) &_etext;
51
initsize = (unsigned long) &__init_end - (unsigned long) &__init_begin;
52
53
printk(KERN_INFO
54
"Memory: %luk/%luk available (%dk kernel code, %dk reserved, %dk data, "
55
"%dk init)\n" ,
56
nr_free_pages() << (PAGE_SHIFT-10),
57
max_mapnr << (PAGE_SHIFT-10),
58
codesize >> 10,
59
reservedpages << (PAGE_SHIFT-10),
60
datasize >> 10,
61
initsize >> 10
62
);
63
}
64
65
/* free the pages occupied by initialization code */
66
67
void
68
free_initmem(void)
69
{
70
unsigned long addr;
71
72
addr = (unsigned long)(&__init_begin);
73
for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) {
74
ClearPageReserved(virt_to_page(addr));
75
init_page_count(virt_to_page(addr));
76
free_page(addr);
77
totalram_pages++;
78
}
79
printk (KERN_INFO "Freeing unused kernel memory: %luk freed\n",
80
(unsigned long)((&__init_end - &__init_begin) >> 10));
81
}
82
83