Lesson03-设计启动用的汇编程序boot.S

上一节的链接脚本中定义了text.boot段,这一节中就用汇编语言实现。

#include "mm.h"
;定义段名
.section = "text.boot"

;定义全局变量
.global _start
_start:
    ;获取处理器的id
    mrs x0, mpidr_el1
    ;判断id号是否为0
    and x0, #0xFF
    ;若为0,进入下一步
    cbz x0, master
    ;若不为0,进入循环语句
    b   proc_hang

;循环语句
proc_hang:
    b   proc_hang

;下一步
master:
    ;对bss段数据初始化为0
    adr x0, bss_begin
    adr x1, bss_end
    sub x1, x1, x0
    bl memzero

    ;初始化栈指针
    mov sp, #LOW_MEMORY
    bl kernel_main
    b proc_hang

posted @ 2024-09-13 22:10  蔚蓝蔷薇  阅读(2)  评论(0编辑  收藏  举报