在如下启动流程中
在head.S 中,__create_page_table时,将 __idmap_text_start 到 __idmap_text_end 的范围创建和恒等映射(物理地址与虚拟地址相同,详见这个页面)
通过搜索“idmap.text”,可以看到只有下表中的这些符合被放在了idmap.text 段中。
下图过程可以看到,开启mmu 到跳转到虚拟地址执行中间的代码,就是上边创建了恒等映射的代码。
所以说,恒等映射保证了打开mmu 之后,cpu 仍然可以继续使用物理地址(因为物理地址会被mmu 作为虚拟地址翻译成相同的值)执行代码。