如果在 EL1 上下文中触发 IRQ,是否可以在 EL3(安全监视器)中执行 IRQ? 例如,我通过spsr_el3输入了 EL1(选择了 el1h),然后设置了一个带有vbar_el1的向量表。现在,我想在 EL3 模式下执行一些 IRQ。我该怎么做?
你想要的被称为"物理IRQ路由",通过scr_el3
控制。从手册:
IRQ,位 [1]物理 IRQ路由。 0b0 在低于 EL3 的异常级别执行时,物理 IRQ 中断不会带到 EL3。 在 EL3 上执行时,不会发生物理 IRQ 中断。 0b1 在任何异常级别执行时,物理 IRQ 中断 被带到EL3。
如果您只想在 EL3 处处理一些IRQ,而将其他 IRQ 留给 EL1,那么您可以通过设置在 EL3 异常向量中简单地处理它:
spsr_el1
到spsr_el3
.elr_el1
到elr_el3
.elr_el3
vbar_el1
加上0x80
/0x280
/0x480
/0x680
之一,具体取决于spsr_el3
中的状态位。spsr_el3 = (spsr_el3 & ~0xf00fff) | 0x3c5
.如果您的架构支持 PANspsr_el1
,您还必须检查SPAN
字段的,如果为零,则0x400000
spsr_el3
。