查看原文
其他

ARM Linux的中断服务程序工作在ARM的IRQ模式吗?

宋宝华 Linux阅码场 2021-01-31

大家都知道,ARM有IRQ, FIQ, USR,SVC,ABORT等各种模式。当系统收到IRQ的时候,会进入ARM的IRQ模式。那么,ARM Linux各种驱动的中断服务程序工作在ARM的IRQ模式吗?

答案是否定的。


我们加一段汇编来读CPSR:

然后我们随便找一个ARM Linux的中断服务程序去打印CPSR:


然后我们发现打印出来的值是:

cpsr:40000193

低8位的二进制是10010011


那么对应ARM CPSR的查询,可以看出CPU处于ARM的SVC模式(低5位是10011),而且I bit被设置(第7位是1),所以是禁止IRQ的。

模式表:

可见,ARM Linux最初进入IRQ模式后,比较快速地从IRQ模式切换到了SVC模式,但是这个时候,并没有使能CPSR的I bit,所以仍然是禁止其他中断嵌套进入的。


(完)



"Linux阅码场"是专业的Linux及系统软件技术交流社区,Linux系统人才培养基地,企业和Linux人才的连接枢纽。


查看我们精华技术文章请移步:

Linux阅码场精华文章汇总


求职招聘请移步:

Linux阅码场: 连接企业和Linux人才的platform总线


扫描二维码关注我们 

如果觉得好,请

转发

转发

转发

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存