简单介绍arch/riscv/kernel/head.S中的启动流程。

 

riscv - boot - head_RISCV

 

1. vmlinux.lds.S

 

vmlinux.lds.S是用于链接vmlinux的链接脚本文件:

riscv - boot - head_Linux_02

其中:

a. 输出的架构是riscv;

b. entry point是_start;

c. 起始地址是LOAD_OFFSET;

d. _start放在最前面;

 

2. head.S

 

_start定义在head.S文件中:

riscv - boot - head_Linux_03

 

head.S中定义了linux kernel启动的流程:

riscv - boot - head_RISCV_04

 

1) head.i

 

head.S中包含了很多条件编译选项,可以生成预处理之后的文件head.i作为参考。

 

使用如下两条命令,可以获取编译head.S的命令:

riscv - boot - head_Linux_05

 

如下:

riscv - boot - head_Linux_06

 

调整一下该命令,即可生成head.i: