大家都知道,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,所以仍然是禁止其他中断嵌套进入的。
(完)
-
ARM
+关注
关注
135文章
9499浏览量
388551 -
Linux
+关注
关注
88文章
11627浏览量
217888 -
中断服务
+关注
关注
0文章
9浏览量
7070
原文标题:ARM Linux的中断服务程序工作在ARM的IRQ模式吗?
文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录

ARM Linux各种驱动的中断服务程序工作在ARM的IRQ模式吗?
评论