1 Star 0 Fork 0

博尔特烦恼/chcore-note

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
a 7.42 KB
一键复制 编辑 原始数据 按行查看 历史
博尔特烦恼 提交于 2022-03-17 17:38 +08:00 . 2
+------------------------------------------------------+
| TIPS: | +----------------------------------------------+
内核空洞映射[以页管理方式动态进行映射,此处以页粒度=2M为例] | get_next_ptp可以获取申请页的虚拟地址以供操作系统使用| | TIPS:页的方式只有L0的页表页是与bootloader阶段|
| | | 定义的boot_ttbr1_l0基地址是一样的,内核共用一|
| | | 个页表。 |
| <--------- 填充方向 映射访问方向 ----------> | | 后面的L1, L2, L3(如果页粒度是4K)都将从buddy |
| | | 里面申请. |
| | | |
| entry的坐标通过L0/L1/L2/L3获取 | | 如果页粒度是2M, 则只需要L0,L1,L2三级页表 |
| entry内容: next ptp 的物理地址(低12位清零) + 12位属性| | |
| | | |
| | | |
| MMU用到的都是物理地址, OS用到的是虚拟地址 | | |
| | | |
1page = 512entry * 64bit/8 = 4KB +------------------------------------------------------+ | |
l0 ptp +----------------------------------------------+
+------------> +---------+ get_next_ptp
addr valid bit = 48 | | | l1
| | |
9 9 9 21 | | | IS_PTE_INVALID,说明这个entry没有填充,需要填充 new ptp1
+--+----+----+-----+----------+ | | | +------------------------------------------> +-----------+
63| | L0 | L1 | L2 | 2M | 0 | | | | 填充物理地址(来自新申请的页的物理地址)+属性 | |
+--+----+----+-----+----------+ | | | | | |
offset | | | | | |
VA | +---------+ | | |
+ +-------------------+ entry| <------------+ | |
| | | | +---------+ +-----------+ 与前面get_next_ptp同理
| | +--+------+ | | entry | <----------------------------->
| | |ttbr1_el1| +---------+ +-----------+
+-------------------> | +---------+ | |
| | | |
| | +-----------+
+-------------------+ page
MMU
l2
new ptp2
<---------------------------------------------> +----------------+ PA
entry | <-------------------------->+--------------------+---------->KBASE + 256
+----------------| | | 2M +
| <-------------------------> +--------------------+ |
+----------------+ | | 2M +--------------> 在boot阶段没有提前固定映射的内核空洞
| | +--------------------+ |
| | | | |
| | +--------------------+ |
+----------------+ | | +
+--------------------+---------->KBASE + 512
page
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/home-coder/chcore-note.git
git@gitee.com:home-coder/chcore-note.git
home-coder
chcore-note
chcore-note
master

搜索帮助