问题描述
这与编程无关,但这是Linux内核程序员可以回答的一种问题。
在linux源arch / arm64 / vmlinux.lds.S中,我看到这一行,
ENTRY(_text)
那个文件说应该是_text == (KIMAGE_VADDR + TEXT_OFFSET)
因此,_text是虚拟地址。然后我跟随KIMGAE_VADDR的来源,这似乎是由arch / arm64 / Makefile中定义的值KASAN_SHADOW_SCALE_SHIFT决定的。
(我知道当AArch VA_BITS为39,即KIMAGE_VADDR时,内核虚拟地址从0xffffff80_00000000开始。并且猜测此虚拟地址受此KASAN_SHADOW_SCALE_SHIFT值等的影响)
但是在编译vmlinux
之后,应该将其加载到哪个物理地址?
并将物理地址转换为预期的内核虚拟地址,我应该在编译内核之前设置一个在初始化期间要使用的页表吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)