首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

ARM32 页表映射

因此r0指Linux版本的页面表地址,r1表示要写入的Linux版本的PTE页面表项内容,这里指Linux版本的页面表项内容,而非硬件版本的页面表项内容。...该函数的主要目的是根据Linux版本的页面表项内容来填充ARM硬件版本的页表项; 首先把linux内核版本的页表项内容写入linux版本的页表中,然后根据mem_type数据结构prot_pte的标志位来设置.../* v6 */ linux内核定义的PTE页面表相关的软件标志位如下: /* * "Linux" PTE definitions...linux内核代码中(例如linux3.7),等同如下代码片段: tst r1, #L_PTE_YOUNG tstne r1, #L_PTE_PRESENT moveq r3, #0 如果没有设置L_PTE_YOUNG...当往一个干净页表写入时,会触发写权限缺页中断(虽然linux版本的页面表项标记了可写权限,但是ARM硬件页面表项还不具有写入权限),那么在缺页中断处理handle_pte_falut()会在该页的linux

2.8K30

1.ARMv8-A架构

TTBRx寄存器保存了第0级页表的基地址(L0 Table base address, Linux内核中称为PGD), L0页表中有512个表项(Table Descriptor),以虚拟地址的bit[...每个表项的内容含有下一级页表的基地址,即L1页表(Linux内核中称为PUD)的基地址。...PUD页表中有512个表项,以虚拟地址的bit[38:30]为索引值在PUD表中查找相应的表项,每个表项的内容含有下一级页表的基地址,即L2页表(Linux内核中称为PMD)的基地址。...PMD页表中有512个表项,以虚拟地址的bit[29:21]为索引值在PMD表中查找相应的表项,每个表项的内容含有下一级页表的基地址,即L3页表(Linux内核中称为PTE)的基地址。...*pte; if (pmd_none(*pmd) || pmd_sect(*pmd)) { pte = alloc(PTRS_PER_PTE * sizeof(pte_t))

91420
领券