arm920t架構中有7中執行模式:
1.使用者模式(user)
2.快中斷模式(fiq)
3.中斷模式(irq)
4.超級使用者模式(svc)
5.中止模式(abt)
6.系統模式(sys)
7.未定義模式(und)
arm在處理異常和中斷的時候都會到中斷向量表中尋找相對應的異常與中斷處理程式位址,通過跳轉指令去執行相關的異常與中斷的處理程式。
在arm檢測到異常或中斷時,系統會進入相對應的執行模式,如中斷進入irq模式,具體進入什麼中斷可以通過讀取cpsr暫存器的值來判斷。在進入相關的執行模式中,各個模式都有自己專屬的暫存器,不同於通用暫存器,這些是只有進入該模式才有的暫存器,所以在進入異常中斷處理程式之前,要儲存除了專用暫存器以外的專用暫存器,在離開異常中斷處理程式之後,要恢復儲存的暫存器的值,並且恢復cpsr的值。
在相應的模式下,只有fiq模式的專用暫存器有r8-r14,高達7個,其他的模式(除了系統和使用者模式),專用暫存器只有r13(sp)和r14(lr),分別用來儲存棧和返回位址。
在異常處理完之後,各個異常模式的返回位址也是不同的,要根據位址返回表設定返回位址
cpsr寄存中也有關於cpu對中斷、快中斷模式的設定bit位,如果要實現中斷和快中斷,必須將對應的bit設定為enable,否則cpu不允許中斷和快中斷模式,這個相當於中斷總開關
cpsr暫存器bit6、7是中斷、快中斷使能開關,清零則使能,置位則禁能。
m0-m4表示arm模式,具體查表就可以知道。
高4位是有關暫存器運算的狀態位,程式不用過分關心。
ARM異常和中斷
異常優先順序 異常處理流程 中斷處理 異常就是在程式執行過程中 user mode 出現了一些異常情況,而中斷是異常的一種情況.如圖 上圖需要特別注意的就是,如果在程式執行過程中需要進行系統呼叫 程式正常執行在user模式,而核心執行在svc模式,user模式無法直接執行svc模式的指令,因此需要通...
ARM 異常中斷處理
在arm體系中,程式執行的流程有三種 要了解arm處理異常中斷的流程原理,就要先熟悉一下arm的工作模式與暫存器。如圖,arm有七種工作模式,大多數程式是工作在使用者模式usr下的,其他六種工作模式屬於特權模式,特權模式的存在是為了處理中斷 異常,或者訪問被保護的系統資源。不同模式之間的轉換可以通過...
arm中斷保護和恢復 ARM中斷異常處理的返回
舉個小例子,下面是一段arm彙編 0x3000bl add 0x3004mov r0,0 0x3008mov r1,1 0x300cmov r2,2 area test,code,readonly entry start mov r0,1 mov r1,1 bl add mov r0,0 mov r...