阅读ARM Generic Interrupt Controller第4.1.4节,其解释如下:
寄存器银行业务是指在同一地址提供多个寄存器副本。寄存器访问的属性确定要寻址寄存器的哪个副本。
我对at the same address
有点困惑。
例如如果R12和R12_fiq是相同的寄存器,处理器将如何保证在fiq模式下R12中的原始数据不会被覆盖。并且需要保证吗?
我正在网上搜索很长时间。但是没用。 All the related questions对我没有帮助。
我认为Benoit在What does 'bank'ing a register mean?中的回答对您有所帮助,但我不确定。
谢谢。
------------更新-----
由于domen的回答,R8_usr和R8_fiq是两个不同的寄存器。对不起,我不知道如何投票给他。而且我还注意到在ensc的答案中提到了“专用”一词,也许他知道它们是不同的。但是由于我的描述不清,他没有强调这一点。
答案 0 :(得分:1)
“ GIC”和R12
没有太多共同之处。 GIC是一个控制器(由某些但不是每个ARM CPU使用),可以通过内存地址进行访问。根据安全模式和/或cpu节点,相同的地址可以提供对不同内部寄存器的视图。
R12
是一个CPU寄存器。出于效率方面的考虑(例如,避免在退出FIQ时恢复其先前的值),FIQ模式具有专用的高位寄存器组(r8
-r15
)。
堆栈指针(r13
)和lr
(r14
)也可以存储,因此例如IRQ模式可以拥有自己的堆栈,也可以发出lr
中的某些状态信号(例如,堆栈对齐)。