linux 内核入口地址,Linux内核程序入口地址

在Linux内核中,使用vmlinux.lds.S文件(路径:arch/arm64/kernel/)布局内核映像中相关段(例:.text、.data)的位置。

在Linux内核编译时,vmlinux.lds.S文件最终会被构建成链接脚本vmlinux.lds文件(路径:arch/arm64/kernel/)。

本文主要介绍Linux内核程序运行的起始位置_text,在vmlinux.lds.S文件中定义如下:

ENTRY(_text) ## 指定内核程序入口地址

...

. = KIMAGE_VADDR + TEXT_OFFSET; ## 当前地址为KIMAGE_VADDR + TEXT_OFFSET

.head.text : {

_text = .; ## _text为当前地址

HEAD_TEXT

}

从上面可以看出:_text = KIMAGE_VADDR + TEXT_OFFSET。

1、KIMAGE_VADDR定义

文件:arch/arm64/include/asm/memory.h,定义如下:

#define VA_BITS (CONFIG_ARM64_VA_BITS) ## 39

#define VA_START (UL(0xffffffffffffffff) - \

(UL(1) << VA_BITS) + 1)

#define KIMAGE_VADDR (MODULES_END)

#define MODULES_END (MODULES_VADDR + MODULES_VSIZE)

#define MODULES_VADD

你可能感兴趣的:(linux,内核入口地址)