u-boot启动分析-start.s文件分析-arm汇编指令分析

194-197行:

    mrs    r0, cpsr
    bic    r0, r0, #0x1f
    orr    r0, r0, #0xd3
    msr    cpsr,r0

功能:设置CPU在SVC工作模式,获取最高等级的权限

指令分析:

  1. mrs    将状态寄存器传送至通用寄存器类指令
    格式:MRS{<条件码>}Rd,CPSR}SPSR
    其中:
    Rd      目标寄存器,Rd不允许R15。
    R=0     将CPSR中的内容传送目的寄存器。
    R=1     将SPSR中的内容传送至目的寄存器。
    例:
    MRS   R0,CRSR              ;将CPSR中的内容传送至R0
    MRS   R3,SPSR              ;将SPSR中的内容传送至R3
  2. 将通用寄存器的内容传送至状态寄存器。
    格式:
    MSR{<条件码>CPSR_f|SPSR_f,<#ommed_8r>
    MSR{<条件码>CPSR_<field>|SPSR_<field>,Rm
    例2:
    仅置位C标志,保留N、Z、V标志。
    MRS    R0,CPSR                    ;将CPSR中的内容传送至R0
    ORR    R0,R0,#&1f                ;置位R0的第29位
    MSR    CPSR_c,R0                   ;再将R0中的内容传送至CPSR
    注释:
    MRS与MSR配合使用,作为更新PSR的读-修改-写序列的一部分。例如:改变处理器或清除标志Q。注意:当处理器在用户模式或系统模式下,一定不能试图访问SPSR
    这条指令不影响条件码标志。
  3. BIC指令的格式为: BIC{条件}{S}  目的寄存器,操作数1,操作数2
    IC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中。
    操作数1应是一个寄存器, 操作数2可以是一个寄存器、被移位的寄存器、或一个立即数。
    操作数2为32位的掩码,如果在 掩码中置了某一位1,则清除这一位。未设置的掩码位保持不变。
    bic r0,r0,#0x1f
    0x1f=11111b
    其含义:清除r0的bit[4:0]位。
  4. ORR指令的格式为: ORR{条件}{S}  目的寄存器,操作数1,操作数2
    ORR指令用于在两个操作数上进行逻辑戒运算,并把结果放置到目的寄存器中。
    操作数1应该是一 个寄存器,操作数2可以是一个寄存器,被移位的寄存器,或一个立即数。
    该指令常用于设置操 作数1的某些位。
    指令示例: ORR R0,R0,#3          ;  
    该指令设置R0的0、1位,其余位保持不变。  
    orr r0,r0,#0xd3    
    0xd3=1101 0111    
    将r0与0xd3作算数或运算,然后将结果返还给r0,即把r0的bit[7:6]和bit[4]和bit[2:0]置为1。

orr ORR指令的格式为: ORR{条件}{S}  目的寄存器,操作数1,操作数2

ORR指令用于在两个操作数上进行逻辑戒运算,并把结果放置到目的寄存器中。

    mrs    r0, cpsr            @ 将cpsr寄存器的值传给通用寄存器R0
    bic    r0, r0, #0x1f       @ 0x1f=0001_1111 清除r0的[4:0]位,就是清零cpsr的模式位
    orr    r0, r0, #0xd3       @ 0xd3=1101_0011 置位r0的[7:6]、[4]、[1:0],禁止IRQ、禁止FIQ、工作状态位:ARM、进入管理模式
    msr    cpsr,r0             @ 1将r0通用寄存器的值传给cpsr寄存器

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值