`
xitong
  • 浏览: 6208103 次
文章分类
社区版块
存档分类
最新评论

详解ARM9的CPSR寄存器

 
阅读更多

详解ARM9的CPSR寄存器

最近在学习嵌入式底层系统开发,在写启动代码时要设置各个模式的SP,需要调整CPU的工作模式,部分代码如下:

.equ DISABLE_IRQ, 0x80
.equ DISABLE_FIQ, 0x40

.equ SYS_MOD, 0x1f
.equ IRQ_MOD, 0x12
.equ FIQ_MOD, 0x11
.equ SVC_MOD, 0x13
.equ ABT_MOD, 0x17
.equ UND_MOD, 0x1b
msr cpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|SVC_MOD)
ldr sp,=_SVC_STACK

msr cpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|IRQ_MOD)
ldr sp,=_IRQ_STACK

msr cpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|FIQ_MOD)
ldr sp,=_FIQ_STACK

msr cpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|ABT_MOD)
ldr sp,=_ABT_STACK

msr cpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|UND_MOD)
ldr sp,=_UND_STACK

msr cpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|SYS_MOD)
ldr sp,=_SYS_STACK

代码中用到了cpsr_c,那么究竟cpsr_c与cpsr是什么关系?

ARM9的每种工作模式除R0~R15共16个寄存器外,还有第17个寄存器CPSR(Current Program Status Register),叫做当前程序状态寄存器,CPSR中一些位被用于标识各种状态,一些位被用于标识当前出于什么工作模式。CPSR有4个8位区域:标志域(F)、状态域(S)、扩展域(X)、控制域(C)。

在ARM 处理器中,只有MSR 指令可以直接设置状态寄存器CPSR或SPSR。指令格式如下:
MSR{cond} psr_fields,#immed_8r(8位立即数)
MSR{cond} psr_fields,Rm
其中: psr 指CPSR 或SPSR
fields 指定传送的区域。Fields 可以是以下的一种或多种(字母必须为小写):

  • c 控制域屏蔽字节(psr[7…0])
  • x 扩展域屏蔽字节(psr[27…8])
  • s 状态域屏蔽字节(psr[31.…28])

分享到:
评论

相关推荐

    ARM_cpsr寄存器

    ARM_cpsr寄存器

    ARM CPSR + SPSR详解

    ARM CPSR + SPSR详解 1、SPSR 为 CPSR 中断时刻的副本,退出中断后,将SPSR中数据恢复到CPSR中。 2、用户模式和系统模式下SPSR不可用。

    ARM中的程序状态寄存器(CPSR).pdf

    ARM中的程序状态寄存器(CPSR).pdf

    ARM指令集详解(带实例!).doc

    从实例学会ARM指令集,主要有自述逻辑指令,移位指令,比较指令,分支指令等等

    嵌入式系统/ARM技术中的ARM处理器CPSR标志位和条件符之间的关系

     ARM V4的CPSR寄存器(和保存它的SPSR寄存器)中的位分配如下图1所示。  图1 程序状态寄存器格式  状态标志位含义:(其它位的含义和本文主题无关,此处不多介绍)  N  N=1 表示运算的结果为负数;N=0 ...

    ARM中cpsr学习

    ARM中通过cpsr技术,可以让arm工作在不同的工作状态。

    嵌入式系统/ARM技术中的ARM程序状态寄存器

    ARM体系结构包含1个当前程序状态寄存器(CPSR)和5个各份的程序状态寄存器(SPSRs)。使用MSR和MRS指令来设置和读取这些寄存器。  当前程序状态寄存器(CPSR),持有关于当前处理器状态的信息。其他5个各份的程序...

    ARM指令大全(汇编语言)日记

    ARM指令集详解 ARM可以用两套指令集:ARM指令集和Thumb指令集。本文介绍ARM指令集。在介绍ARM指令集之前,先介绍指令的格式。 1 指令格式 (1)基本格式 <opcode>{<cond>}{S} ,<Rn>{,<opcode2>} 其中,内的项是...

    嵌入式系统/ARM技术中的ARM状态寄存器访问指令

    ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。  状态寄存器中有些位是当前没有使用的,但在ARM将来版本中有可能使用这些位,因此用户程序不要使用这些位。  程序不能通过直接修改CPSR中T的控制位...

    arm汇编指令集大全

    1 ARM 汇编指令集 一、 跳转指令 跳转指令用于实现程序流程的跳转, 在 ARM 程序中有两种方法可以实现程序流程的跳转: ...当 CPSR 寄存器中的 Z 条件码置位时,程序跳转到标号 Label 处执行 BEQ Label

    嵌入式系统/ARM技术中的Thumb状态下的寄存器

    Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、链接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、I-R和SPSR。 ...

    ARM寄存器转换

    MRS R1,CPSR BIC R1,R1,#0x1F ORR R1,R1,#0x1B MSR CPSR_cxsf,R1

    详解ARM体系结构支持的异常包括复位、中断、未定义指令等.pdf

    ARM 体系结构所支持的异常和具体含义如下:   1、复位(优先级1) ... 当处理器的外部中断请求引脚有效,且CPSR 中的I 位为0 时,产生IRQ 异常。系统的外设能该异常请求中断服务(异常向量:0x0000,0018);

    arm9疑难问题小结

    对初学arm的时,一些疑难问题进行总结,ARM汇编% ldr和adr CPSR_cxsf ^的作用 MACRO-MEND

    ARM中的特殊寄存器

    SP(R13) 特殊寄存器 LR(R14) 1、当存在子程序时,保存有子程序的返回地址 2、当异常中断发生时,保存有异常模式的返回地址 PC(R15) 保存程序的当前地址 例 :(bootloader中start.S文件) reset: bl ...

    ARM的V4、V5版本的区别

    当前程序状态信息从原来的R15寄存器移到当前程序状态寄存器CPSR中(Current Program Status Register);增加了程序状态保存寄存器SPSR(Saved Program Status Register);增加了两种异常模式,使操作系统代码可...

    嵌入式系统/ARM技术中的操作系统μC/OS-II的移植条件

     ARM处理器核包含一个CPSR寄存器,该寄存器包括一个全局中断禁止位,控制它打开和关闭中断。  (4)处理器支持一定数量的数据存储硬件堆栈  对于一些只有10根地址线的8位控制器,芯片最多可访问1KB存储单元,在...

    SimIt-ARM-3.0 ARM指令模拟器

    [root@ORA9 gcc-asm]# arm-linux-gcc hello.c -o hello -static [root@ORA9 gcc-asm]# ls -l hello* -rwxr-xr-x 1 root root 520775 Sep 8 10:18 hello -rw-r--r-- 1 root root 160 Sep 8 10:15 hello.c [root@ORA9...

    cpsr

    cpsr

    ARM system-on-chip architecture

    9.3 ARM9TDMI 260 9.4 ARM10TDMI 263 9.5 Discussion 266 9.6 Example and exercises 267…… 10.1 Memory size and speed 10.2 On-chip memory 10.3 Caches 10.4 Cache design - an example 10.5 Memory management...

Global site tag (gtag.js) - Google Analytics