aarch64从EL3中的EL1执行IRQ

问题描述

如果在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_el1spsr_el3
  • elr_el1elr_el3
  • elr_el3vbar_el1加上0x80 / 0x280 / 0x480 / 0x680中的一个,具体取决于{{1}中的状态位}。