核心中暫存器組使用的說明¶
簡介¶
SH-3 和 SH-4 CPU 系列傳統上包含單個部分暫存器組(由 SR.RB 選擇,只有 r0 ... r7 被 banked),而其他系列可能具有更多全功能的 banking 或根本沒有這種能力。
SR.RB banking¶
在這種型別的 banking 中,如果 SR.RB 設定為我們感興趣的 bank,則 banked 暫存器直接對映到 r0 ... r7,否則當處於另一個 bank 的上下文中時,仍然可以使用 ldc/stc 引用 banked 暫存器(作為 r0_bank ... r7_bank)。 開發者在編寫使用這些 banked 暫存器的程式碼時必須牢記 SR.RB 值,原因很明顯。 使用者空間也無法訪問 bank1 值,因此核心可以非常有效地將它們用作暫存暫存器。
目前,核心使用幾個這些暫存器。
r0_bank, r1_bank (引用為 k0 和 k1,用於在進行異常處理時作為暫存暫存器)。
r2_bank (用於跟蹤 EXPEVT/INTEVT 程式碼)
由 do_IRQ() 及其友元使用,用於基於中斷異常向量跳轉表偏移量進行 irq 對映
r6_bank (全域性中斷掩碼)
SR.IMASK 中斷處理程式利用它來設定中斷優先順序(由 local_irq_enable() 使用)
r7_bank (current)