XOS中关中断、恢复中断的汇编实现:
1.系统函数输入输出中定义
;**
;* @brief EXPORT & IMPORT
;*
; 实现的系统函数
EXPORT OSIntDisable ; 备份中断状态并关中断
EXPORT OSIntRestore ; 恢复上次备份的中断状态
2.汇编代码段实现
;**
;* @brief 代码段
;*
AREA Routines, CODE
ENTRY
; 关中断并返回初始中断状态,中断屏蔽寄存器PRIMASK仅有一位宽度,置位后,不可屏蔽中断NMI和HardFault不被屏蔽外,屏蔽所有其他中断。
OSIntDisable
MRS R0, PRIMASK ;
CPSID I ; PRIMASK=1
BX LR
; 恢复中断状态
OSIntRestore
MSR PRIMASK, R0
BX LR
3.汇编指令参考以下两个链接:
https://blog.youkuaiyun.com/weibo1230123/article/details/84036225
ARM汇编:MRS和MSR指令
ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。
一:下面先来说说状态寄存器
针对32位的ARM处理器,状态寄存器就是一个32位长的寄存器。每个位的含义如下图:
分成了4部分:
1,条件标志位
N(Negative), Z(Zero), C(Carry), V(Verflow)统称为条件标志位。ARM指令可以根据CPSR中的这些条件标志位来选择性的执行。
2,Q标志位
ARM v5的E系列处理器中,CPSR的bit[27]称为Q标志位。主要用于指示增强的DSP指令是否发生了溢出。
3,控制位
I, F, T以及M[4:0]统称为控制位。当异常中断发生时,这些位发生变化。在特权级的处理器模式下,软件可以修改这些控制位。
下表示控制位M[4:0]的含义: