在内核启动时需要将bss段的所有数据清0,这里就需要memzero函数。
.global memzero ;全局可见
memzero:str xzr, [x0], #8 subs x1, x1, #8b.gt memzeroret
内核启动时需要经常读写soc内部寄存器的值,这里就需要用到对应的函数put32和get32。
.global put32
put32:str w1,[x0] ;storage register 存储寄存器中的数据到内存中 xret ;x0是第一个参数 w1是第二个参数的低32位.global get32
get32:ldr w0,[x0] ;load register 将内存中的数据加载到内存中ret ;x0为第一个参数 w0为返回的参数.global delay
delay:sub x0, x0, #1 ;延迟函数bne delayret