UBoot:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

来源:互联网 发布:java try的用法 编辑:程序博客网 时间:2024/06/05 16:28

第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

 

bbl的区别:

B跳转之后不返回,类似于C语言中的goto;

Bl跳转之后返回,继续执行下面的语句,即把下一句的地址放入lr寄存器,子过程执行完后,会执行MOV  PC  LR,把保存的地址放入PC指针,继续执行下面的语句。

 UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)
UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

Bx  lr;返回原有模式;s5pv210没有用到,重点介绍两个宏:ENTRYENDPROC

ENTRY:UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)下。


UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)


UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

 

展开后即为:

.globl  save_boot_params

.align  4

save_boot_params:

bx  lr

 

ENDPROC:

 UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

下面是弱标号:当连接器发现别的地方有定义,则调用别的地方的,别的地方找不到,才调用此处的定义。
UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)
上图为:读--->设置--->写回;bic r0,r0,#0x1f  把最后几位清零

0xd3分析如下图:

 UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

条件判断:

 UBoot(S5PV210)第四节:ENTRY等宏的展开,CPSR寄存器的设置(stat.S)

因不是_OMAP芯片,所以,整个取与为0,再取非为1,所以if宏定义所有语句都会执行,这涉及到cp15协处理器(包含一系列的寄存器)的操作。

Cp14一般用于Debug调试,cp12-13保留给ARM公司以后用,cp11一般用于双精度浮点数的计算,cp10一般用于单精度浮点数的计算,cp8-9保留,cp0-7ARM留给各生产厂家使用。