内核中寄存器组使用的说明¶
简介¶
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)