内核移植(三)--关闭全局中断

关闭全局中断

;/*
; * rt_base_t rt_hw_interrupt_disable()关闭全局中断  注意中断嵌套的使用
; * 当在 C 中调用汇编的子程序返回值,会将 r0 作为函数的返回值。
; 在 rt_hw_interrupt_disable() 函数里面需要依序完成的功能是:
; 1). 保存当前的全局中断状态,并把状态作为函数的返回值。
; 2). 关闭全局中断。
; r0 存储的数据就是函数的返回值。中断可以发生在 “MRS r0, PRIMASK” 指令和 “CPSID I” 之间,这并不会导致全局中断状态的错乱
;
; */
rt_hw_interrupt_disable    PROC                 ;关键字 PROC 表示汇编子程序的开始 PROC 伪指令定义函数
    EXPORT  rt_hw_interrupt_disable             ; EXPORT 输出定义的函数,类似C语言的 extern 使其具有全局属性,在外部头文件声明后(rthw.h 中声明) 就可以在 C 文件中调用
    MRS     r0, PRIMASK                         ;读取 PRIMASK 寄存器的值到 r0 寄存器
    CPSID   I                                   ;关闭全局中断
    BX      LR                                  ;函数返回
    ENDP                                        ; ENDP 函数结束

你可能感兴趣的:(RT-Thread,内核移植,关闭全局中断,RT-Thread)