pagetable_init()
来源:互联网 发布:js字符串比较大小 编辑:程序博客网 时间:2024/05/20 10:22
pagetable_init()根据物理内存初始化页目录项及页表项
static void __init pagetable_init (void)
{
unsigned long vaddr;
pgd_t *pgd_base = swapper_pg_dir;
#ifdef CONFIG_X86_PAE
int i;
//初始化整个页目录项(1024项)
for (i = 0; i < PTRS_PER_PGD; i++)
set_pgd(pgd_base + i, __pgd(__pa(empty_zero_page) | _PAGE_PRESENT));
#endif
if (cpu_has_pse) {
set_in_cr4(X86_CR4_PSE);
}
if (cpu_has_pge) {
set_in_cr4(X86_CR4_PGE);
__PAGE_KERNEL |= _PAGE_GLOBAL;
__PAGE_KERNEL_EXEC |= _PAGE_GLOBAL;
}
kernel_physical_mapping_init(pgd_base);
remap_numa_kva();
vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
page_table_range_init(vaddr, 0, pgd_base);
permanent_kmaps_init(pgd_base);
#ifdef CONFIG_X86_PAE
pgd_base[0] = pgd_base[USER_PTRS_PER_PGD];
#endif
}
{
unsigned long vaddr;
pgd_t *pgd_base = swapper_pg_dir;
#ifdef CONFIG_X86_PAE
int i;
//初始化整个页目录项(1024项)
for (i = 0; i < PTRS_PER_PGD; i++)
set_pgd(pgd_base + i, __pgd(__pa(empty_zero_page) | _PAGE_PRESENT));
#endif
if (cpu_has_pse) {
set_in_cr4(X86_CR4_PSE);
}
if (cpu_has_pge) {
set_in_cr4(X86_CR4_PGE);
__PAGE_KERNEL |= _PAGE_GLOBAL;
__PAGE_KERNEL_EXEC |= _PAGE_GLOBAL;
}
kernel_physical_mapping_init(pgd_base);
remap_numa_kva();
vaddr = __fix_to_virt(__end_of_fixed_addresses - 1) & PMD_MASK;
page_table_range_init(vaddr, 0, pgd_base);
permanent_kmaps_init(pgd_base);
#ifdef CONFIG_X86_PAE
pgd_base[0] = pgd_base[USER_PTRS_PER_PGD];
#endif
}
- pagetable_init()
- pagetable_init
- paging_init()
- GT4 开发:将 GridFTP 与 Jakarta Commons Virtual File System 集成在一起
- 关于动态生成WML文件的一个Java实例(4)
- Subversion快速入门教程
- 某公司招聘网络管理员时会问的一些问题
- pagetable_init()
- D 语言有关链接
- 将连接数据库的代码隐藏在DLL中
- 对话 UNIX,第 5 部分:操纵数据与文件
- Read and write a FileStream at the same time
- Delphi2006连接Mysql5.1(一)
- 个人化基本设定
- kernel_physical_mapping_init()
- asp.net2.0中的URL映射