问题描述
如果在EL1上下文中触发了IRQ,是否可以在EL3(安全监视器)中执行IRQ?例如。我通过spsr_el3(选择了el1h)输入了EL1,然后用vbar_el1设置了一个向量表。现在,我想在EL3模式下执行一些IRQ。我该怎么办?
解决方法
您想要的称为“物理IRQ路由”,并通过scr_el3
进行控制。来自the manual:
IRQ,bit [1] Physical IRQ Routing. 0b0 When executing at Exception levels below EL3,physical IRQ interrupts are not taken to EL3. When executing at EL3,physical IRQ interrupts are not taken. 0b1 When executing at any Exception level,physical IRQ interrupts are taken to EL3.
如果您只想在EL3上处理一些 IRQ,而将其他的留给EL1,则只需设置以下内容即可在EL3异常向量中进行处理:
-
spsr_el1
至spsr_el3
-
elr_el1
至elr_el3
-
elr_el3
至vbar_el1
加上0x80
/0x280
/0x480
/0x680
中的一个,具体取决于{{1}中的状态位}。