在 x64 上映射 4k 页面是否需要 UEFI?

问题描述

我正在为使用 UEFI 启动的 x64 创建内核。虽然内核必须在低地址加载(我相信,因为 UEFI 需要身份映射页面,所以它不能映射到高于最高物理地址),我想重新定位到内存的末尾。在这个过程中,我打算创建新的分页结构,为了减少内存消耗,我想重用用于映射下半部分图像的页表。但是,这些页表只有在 UEFI 使用 4k 分页时才会存在,所以我的问题是 UEFI 是否需要在 x64 上使用 4k 分页。我相信答案是否定的,但我希望不是这样,并想看看这是否属实。

现在我明白 UEFI 通过 BootServices->AllocatePage 以 4k 块的形式分配内存,它被称为页面,但这是否需要转换为实际使用的映射结构?我注意到在 UEFI 2.8 规范的第 2.3.6 节中,该节提到了 AArch64 调用约定,它指出

MMU 配置:实现必须仅使用 4k 页 [...]

第 2.3.4 节中没有类似的表示,关于 x64 调用约定,这就是为什么我认为答案是否定的。

编辑: 根据我已经看到的内容和 Peter Cordes 的评论,我相信该标准并没有具体说明它应该是什么。因此问题的修订版是:标准是否指定了 4k 翻译粒度?如果不是,x64 上的大多数 UEFI 供应商是否使用 4k 页面

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)