1.1.10. cpsr

/*
 * the actual reset code
 */

reset:
	/*
	 * set the cpu to SVC32 mode
	 */
	mrs1	r0,cpsr2
        

2

CPSR 是当前的程序状态寄存器(Current Program Status Register),

而 SPSR 是保存的程序状态寄存器(Saved Program Status Register)。

具体细节,可参考:

表 1.4. CPSR Bitfield

31302928---76-43210说明
NZCV IF M4M3M2M1M0 
 00000User26 模式
 00001FIQ26 模式
 00010IRQ26 模式
 00011SVC26 模式
 10000User 模式
 10001FIQ 模式
 10010IRQ 模式
 10011SVC 模式
 10111ABT 模式
 11011UND 模式


1

MRS - Move From Status Register

MRS指令的语法为:

四、程序状态寄存器访问指令

1、 MRS指令

MRS指令的格式为:

MRS{条件} 通用寄存器,程序状态寄存器(CPSR或SPSR)

MRS指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下两种情况:

Ⅰ.当需要改变程序状态寄存器的内容时,可用MRS将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。

Ⅱ.当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态寄存器的值,然后保存。

指令示例:

MRS R0,CPSR ;传送CPSR的内容到R0

MRS R0,SPSR ;传送SPSR的内容到R0”

所以,上述汇编代码含义为,将CPSR的值赋给R0寄存器。