5.安全分区的运行时模型
本节介绍了安全分区如何与SPM接口。
5.1. 与SPM的接口
为了在S-EL0中的安全分区中实例化一个或多个安全的服务,SPM应定义以下类型的接口:
可以从S-EL0访问特权操作的接口。 这些操作通常需要访问安全世界中多个软件组件之间共享的系统资源,或者无法从非特权异常级别直接访问。
接口在SPM和安全分区之间建立控制路径。
本节介绍了SPM当前导出的API,该API可以使安全分区本身初始化并在S-EL0中导出其服务。 这些接口无法从非安全世界访问。
5.1.1.导管
SMC调用公约(ARM DEN 0028B)规范描述了用于访问固件服务及其可用性的SMC和HVC导管,具体取决于实现的异常级别。 在S-EL0中,主管呼叫异常(SVC)是唯一可用于无私人软件的架构机制,可以要求在特权软件中实施的操作。 因此,安全分区必须使用SVC导管来访问SPM实现的接口。
SVC会导致S-EL1的例外。 TF-A假定S-EL1的所有权,并在S-EL1中安装了一个简单的异常矢量表,该表将SVC请求从安全分区中传输为SMC请求,作为SMC请求到EL3中的SPM。 在为SMC请求提供服务后,可信赖的固件 - 通过ERET指令将控制直接返回到S-EL0。
5.1.2. 调用公约
SMC呼叫公约(ARM DEN 0028B)规范描述了SMC和HVC导管的32位和64位呼叫约定。 SVC导管介绍了SVC32和SVC64调用约定的概念。 SVC32和SVC64调用约定分别等同于32位(SMC32)和64位(SMC64)呼叫