rt_hw_interrupt_disable 函数中中断状态怎么保证一致性?

2020-1-19 15:18 [复制链接] 1 67

本帖最后由 aozima 于 2020-1-19 21:08 编辑 9 q: j/ z% S+ x' j
  1. rt_hw_interrupt_disable    PROC      ROC 伪指令定义函数    ( a7 H: U- O/ w1 O1 X: `2 z: q
  2. EXPORT  rt_hw_interrupt_disable  ;EXPORT 输出定义的函数,类似于 C 语言 extern   
    6 _) N) T+ q* t$ x9 m. T) Z
  3. MRS     r0, PRIMASK              ; 读取 PRIMASK 寄存器的值到 r0 寄存器    % P& r. K* @+ L& J' S5 w3 l+ s
  4. CPSID   I                        ; 关闭全局中断   
    * ]& i' ~4 j0 X. W( Q
  5. BX      LR                       ; 函数返回    / e7 W6 ]' L: j& V/ G
  6. ENDP
复制代码

9 P3 L0 Y7 J( h, d3 t' ?7 _1 }9 N: c

; U( H5 e8 t. d" C! b如题,在上图中,若在MRS     r0, PRIMASK与CPSID   I之间任务被切换到其它线程调用rt_hw_interrupt_disable时,不是会导致r0的值与预期不一致吗?' g$ z0 S/ V& x+ T* Y
即执行了两次rt_hw_interrupt_disable  ,但是返回值却是一致的?      
1 m! I+ ], s/ \
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2020-1-19 17:52:29 | 显示全部楼层
在m中,PRIMASK只有为0时才能切换任务,所以不存在不一致的问题
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表