上一节的链接脚本中定义了text.boot段,这一节中就用汇编语言实现。
#include "mm.h"
#定义段名
.section = "text.boot"#定义全局变量
.global _start
_start:#获取处理器的idmrs x0, mpidr_el1#判断id号是否为0and x0, #0xFF#若为0,进入下一步cbz x0, master#若不为0,进入循环语句b proc_hang#循环语句
proc_hang:b proc_hang#下一步
master:#对bss段数据初始化为0adr x0, bss_beginadr x1, bss_endsub x1, x1, x0bl memzero#初始化栈指针mov sp, #LOW_MEMORYbl kernel_mainb proc_hang