作为支持两个安全状态的一部分,该架构包括了Secure Monitor Call(SMC)指令。执行SMC会引发Secure Monitor Call异常,该异常目标是EL3。
通常,SMC用于请求服务,可以是来自驻留在EL3中的固件,也可以是由受信任的执行环境托管的服务。SMC最初传递到EL3,其中SMC分发程序(SMC dispatcher)确定将由哪个实体处理该调用。如下图所示:
为了规范接口,Arm提供了SMC调用约定(DEN0028)和Power State Coordination Interface平台设计文档(DEN0022)。这些规范详细说明了SMC如何用于请求服务。
在EL1执行SMC可以被trap到EL2。这对于虚拟化管理程序是有用的,因为虚拟化管理程序可能希望模拟虚拟机看到的固件接口。
【注意】:在任一安全状态下,EL0中都不可用SMC指令。我们将在后面的“中断”部分讨论异常时再看中断控制器。