1. 程式人生 > >ARM處理器各個模式之間是如何切換的?ARM各個模式之間切換時,上下文的儲存哪些是硬體在做?哪些是作業系統在做?

ARM處理器各個模式之間是如何切換的?ARM各個模式之間切換時,上下文的儲存哪些是硬體在做?哪些是作業系統在做?

1、ARM處理器各個模式之間是如何切換的?

答:除使用者模式外的其他6種模式稱為特權模式,這些模式中,程式可以訪問所有系統資源,也可以任意進行處理器模式的切換。處理器模式可以通過軟體控制進行切換(直接設定CPSR暫存器的後五位就可以在6種特權模式之間互相切換),也可以通過外部中斷或異常處理過程進行切換(例如,在USR模式下,發生中斷後切換到IRQ模式)。

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執行的是同一個程序,這時不需要作業系統具體做什麼。

當模式切換伴隨著程序切換時,作業系統需要儲存模式切換之前的上下文環境。也就是程序控制塊,程序控制塊包括識別符號、使用者可見暫存器、控制和狀態暫存器、棧指標等等,這與普通的程序切換類似。