大家都知道,ARM有IRQ, FIQ, USR,SVC,ABORT等各種模式。當(dāng)系統(tǒng)收到IRQ的時候,會進入ARM的IRQ模式。那么,ARM Linux各種驅(qū)動的中斷服務(wù)程序工作在ARM的IRQ模式嗎?
答案是否定的。
我們加一段匯編來讀CPSR:
然后我們隨便找一個ARM Linux的中斷服務(wù)程序去打印CPSR:
然后我們發(fā)現(xiàn)打印出來的值是:
cpsr:40000193
低8位的二進制是10010011
那么對應(yīng)ARM CPSR的查詢,可以看出CPU處于ARM的SVC模式(低5位是10011),而且I bit被設(shè)置(第7位是1),所以是禁止IRQ的。
模式表:
可見,ARM Linux最初進入IRQ模式后,比較快速地從IRQ模式切換到了SVC模式,但是這個時候,并沒有使能CPSR的I bit,所以仍然是禁止其他中斷嵌套進入的。
(完)
-
ARM
+關(guān)注
關(guān)注
134文章
9290瀏覽量
374743 -
Linux
+關(guān)注
關(guān)注
87文章
11449瀏覽量
212700 -
中斷服務(wù)
+關(guān)注
關(guān)注
0文章
9瀏覽量
6975
原文標題:ARM Linux的中斷服務(wù)程序工作在ARM的IRQ模式嗎?
文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
ARM中斷模式(IRQ)和快速中斷模式(FIQ)區(qū)別比較
簡述ARM的2種工作狀態(tài)和7種工作模式
ARM的2種工作狀態(tài)和7種工作模式。[附帶文檔下載]
基于ARM架構(gòu)的linux中斷的工作原理是什么
ARM處理器7種工作模式
ARM向量中斷機制在uClinux下的設(shè)計

ARM7和ARM-Cortex的區(qū)別,ARM為什么會有兩種啟動方式?
需要了解的Linux的IRQ中斷子系統(tǒng)
如何編寫基于ARM的裸機程序和基于Linux的驅(qū)動程序

評論