RISC-V Linux的汇编启动部分比较简单,不算复杂。有两个部分比较核心:页表创建和重定向。页表创建是用C语言写的,今天先分析汇编部分,先带大家分析整体汇编启动流程,然后分析重定向。
注意:本文基于linux5.10.111内核
汇编启动流程
先从整体分析汇编做的事情,有个大体框架。
路径:arch/riscv/kernel/head.S,入口是ENTRY(_start_kernel)
从ENTRY(_start_kernel)开始进行启动前的一些初始化,建立页表前的主要工作:
/* 关闭所有中断 */
csrw CSR_IE, zero
csrw CSR_IP, zero