[原创]Linux arm 启动 c语言部分详解第二讲(Start kernel-> setup_a
Written by leeming
这一讲是主要讲setup_arch中那个没有解释的函数解释完毕,完成setup_arch的函数,好让我们的start_kernel继续下去。
/*
* paging_init() sets up the page tables, initialises the zone memory
* maps, and sets up the zero page, bad page and bad page tables.
*这部分的主要工作建立页表,初始化内存。
*/
void __init paging_init(struct meminfo *mi, struct machine_desc *mdesc)
{
void *zero_page;
//这个函数主要是用来建立各种类型的页表选项(比如内存是MEMORY类型,设备室DEVICE,中断向量表是HIGH_VECTORS)
build_mem_type_table();
{
struct cachepolicy *cp;
//获取cp15处理器的c1寄存器位
unsigned int cr = get_cr();
unsigned int user_pgprot, kern_pgprot;
//获取处理器架构版本
int cpu_arch = cpu_architecture();