FWQ
RISC-V Linux汇编启动过程分析
RISC-V Linux的汇编启动部分比较简单,不算复杂。有两个部分比较核心:页表创建和重定向。页表创建是用C语言写的,今天先分析汇编部分,先带大家分析整体汇编启动流程,然后分析重定向。 注意:本文基于5.10.111内核 汇编启动流程 先从整体分析汇编做的事情,有个大体框架。 路径:arch/riscv/kernel/head.S,入口是ENTRY(_start_kernel) 从ENTRY(_start_kernel)开始进行启动前的一些初始化,建立页表前的主要工作: 关闭所有中断 /* 关闭所有中断 */ csrw CSR_IE, zero csrw CSR_IP, zero 登录后复制 加载全局指针gp /* 加载全局指针gp */ .option push .option norelax la gp, __global_pointer$ .option pop 登录后复制 disable FPU /* 禁用 FPU 以检测内核空间中浮点的非法使用*/ li t0, SR_FS csrc CSR_STATUS, t0 登录后复制 选择一个核启动 /* 选择一个核启动 */ la a3, hart_lottery…