lesson04-设计初始化bss段、读写寄存器值的汇编函数
在内核启动时需要将bss段的所有数据清0,这里就需要memzero函数。
.global memzero ;全局可见
memzero:
str xzr, [x0], #8
subs x1, x1, #8
b.gt memzero
ret
内核启动时需要经常读写soc内部寄存器的值,这里就需要用到对应的函数put32和get32。
.global put32
put32:
str w1,[x0] ;storage register 存储寄存器中的数据到内存中 x
ret ;x0是第一个参数 w1是第二个参数的低32位
.global get32
get32:
ldr w0,[x0] ;load register 将内存中的数据加载到内存中
ret ;x0为第一个参数 w0为返回的参数
.global delay
delay:
sub x0, x0, #1 ;延迟函数
bne delay
ret
声明汇编函数的头文件,指定输入和输出的参数。
#ifndef _BOOT_H
#define _BOOT_H
//汇编函数的头文件
extern void delay(unsigned long);
extern void put32(unsigned long, unsigned int);
extern unsigned int get32(unsigned long);
#endif