在linux源代码中,'_ text'的值在哪里确定?我应该在哪里加载vmlinux文件?

问题描述

这与编程无关,但这是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 (将#修改为@)