參考:
arm體系的cpu有以下7種工作模式:
1、使用者模式(usr):正常的程式執行狀態
2、快速中斷模式(fiq):
3、中斷模式(irq):
4、管理模式(svc):作業系統使用的保護模式
5、系統模式(sys):執行具有特權的作業系統任務
6、資料訪問終止模式(abt):資料或指令預取終止時進入該模式
7、未定義指令終止模式(und):未定義的指令執行時進入該模式
1、arm處理器各個模式之間是如何切換的?
答:arm處理器有7種模式。除使用者模式外的其他6種模式稱為特權模式,特權模式中除了系統模式以外的其餘5種模式稱為異常模式;大多數程式執行於使用者模式;進入特權模式是為了處理中斷、異常、或者訪問被保護的系統資源;
這些模式中,程式可以訪問所有系統資源,也可以任意進行處理器模式的切換。處理器模式可以通過軟體控制進行切換(直接設定cpsr暫存器的後五位就可以在6種特權模式之間互相切換),也可以通過外部中斷或異常處理過程進行切換(例如,在usr模式下,發生中斷後切換到irq模式)。使用者模式切換到特權模式需要swi。
2、arm各個模式之間切換時,上下文的儲存哪些是硬體在做?哪些是作業系統在做?
答:cpu做的:
(1)把返回位址儲存到相應模式的lr暫存器中,例如從usr模式切換到irq模式,cpu會將usr模式下的pc值,儲存到irq模式下的lr暫存器中。
(2)儲存cpsr到相應模式的spsr暫存器中,還是上面的例子,cpu儲存usr模式下的cpsr到irq模式下的spsr中。
(3)將pc設定成相應模式下的某位址值繼續執行。
作業系統做的(以從模式a切換到模式b為例):
作業系統所做內容需要根據情況而定,因為模式切換不一定伴隨著程序之間的切換,有可能從a模式切換到b模式後,cpu執行的是同乙個程序,這時不需要作業系統具體做什麼。
當模式切換伴隨著程序切換時,作業系統需要儲存模式切換之前的上下文環境。也就是程序控制塊,程序控制塊包括識別符號、使用者可見暫存器、控制和狀態暫存器、棧指標等等,這與普通的程序切換類似。
3.當異常發生,cpu進入相應的異常模式時,以下工作是由cpu自動完成的:
2、將cpsr的值複製到異常模式的spsr中;
3、將cpsr的工作模式設為該異常模式對應的工作模式;
4、令pc值等於這個異常模式在異常向量表中的位址,即跳轉去執行異常向量表中的相應指令;
從異常工作模式退回到之前的工作模式時,需要由軟體來完成以下工作:
1、將異常模式的r14減去乙個適當的值(4或8)後賦給pc暫存器;
2、將異常模式spsr的值賦給cpsr;
ARM處理器模式介紹和模式切換
arm體系結構支援7種處理器模式 使用者模式 正常程式工作模式,不能直接切換到其它模式。快中斷模式 支援高速資料傳輸及通道處理。fir異常響應時,進入此模式 中斷模式 通用中斷處理。irq異常響應時,進入此模式。管理模式 作業系統保護 系統復位和軟體中斷時,進入此模式。中止模式 支援虛擬記憶體,儲存...
ARM處理器模式
cpsr暫存器 arm v4的cpsr暫存器 和儲存它的spsr暫存器 中的位分配如下圖所示。處理器模式決定了哪些暫存器是活動的以及對cpsr訪問權。處理器模式要麼是特權模式,要麼是非特權模式。特權模式允許對cpsr的完全讀 寫訪問 與些相反,非特權模式只允許對cpsr的控制域進行讀訪問,但允許對條...
ARM處理器工作模式
arm處理器共有 7種工作模式,如表 3 1所示 表 3 1 arm 處理器工作模式 處理器工作模式 特權模式 異常模式 說明 使用者 user 模式 使用者程式執行模式 系統 system 模式 該組模式下可以任意訪問系統資源 執行特權級的作業系統任務 一般中斷 irq 模式 通常由系統異常狀態切...