如何解决如何在 ARM64 Linux 中创建 1:1 MMU 映射?
我正在尝试关闭 MMU 以运行一些测试代码。我需要创建精确的 1:1 虚拟到物理内存映射,以便在 MMU 关闭后运行代码。
In this question 一个人描述了一种使用汇编代码创建此类映射的方法,但似乎在他创建映射时,系统已无法正常工作。
我的问题是:
解决方法
我需要精确地创建 1:1 的虚拟到物理内存映射 MMU关闭后运行的代码
这根本就没有意义。内存映射仅在 MMU ON 时使用。
一旦 MMU 关闭,就没有虚拟到物理的转换,内存由物理地址访问。好吧,可以将其描述为“虚拟到物理的 1:1”。
关闭 MMU 的问题是执行该操作的代码应该专门构建以使用 1:1 映射运行。
例如代码被构建以调用具有虚拟地址border-bottom-width: 1px
的函数。操作系统将您的程序放置在物理地址 0x8000
。所以基本上跳到0x00C0_0000
就是跳到物理0x8000
。
一旦 MMU 关闭,跳转到 0x00C0_8000
将进入物理 0x8000
。
此外,请确保在关闭 MMU 之前刷新缓存。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。