ARM平台SMC调用规范详解

需积分: 35 14 下载量 63 浏览量 更新于2024-07-21 收藏 190KB PDF 举报
"ARM SMC调用规范是针对ARM平台系统软件的重要编程指南,涉及到ARM安全编程的关键细节。这份文档由ARM Limited在2013年首次发布,详细阐述了SMC(System Monitor Call)调用的约定和方法。SMC是一种在ARM处理器中进行特权级切换和执行特定安全操作的技术。" 在ARM架构中,SMC是一种特殊的中断或异常类型,允许从用户模式、系统模式甚至是其他更高级别的特权模式直接调用到系统监控器。这种调用方式常用于安全相关的功能,如信任区(TrustZone)、安全操作系统(Secure OS)与非安全环境之间的交互,以及硬件安全功能的访问。 SMC调用规范定义了以下关键方面: 1. **调用编号**:每个SMC都有一个唯一的调用编号,用于识别不同的服务。这些编号通常分为预定义和预留范围,预定义的编号由ARM定义,而预留编号留给OEM和厂商自定义。 2. **参数传递**:SMC调用时,参数通过寄存器传递。具体来说,通常R0-R3用于传递参数,R4-R11可能用于传递额外信息,而R12则作为通用目的寄存器。返回值通常放在R0寄存器中。 3. **权限级别转换**:SMC可以用于从低特权级(如用户模式)切换到高特权级(如安全监控模式),并且在完成后返回原来的模式。 4. **异常处理**:SMC调用可能会引发异常,这些异常需要被正确处理,以确保系统的稳定性和安全性。 5. **返回机制**:SMC调用结束后,处理器状态和控制寄存器会根据调用前的状态进行恢复,以保证调用者上下文的正确恢复。 6. **兼容性和扩展性**:SMC调用规范需要考虑不同版本的ARM处理器和未来的扩展,确保代码的兼容性和可移植性。 7. **安全特性**:SMC调用是ARM安全架构的关键组成部分,它提供了对敏感操作的隔离和保护,例如,通过TrustZone技术实现硬件级别的安全隔离。 理解并遵循ARM SMC调用规范对于开发在ARM平台上运行的安全软件至关重要。开发者需要熟悉这些规范,以确保软件的正确行为,同时充分利用ARM处理器提供的安全特性。此外,由于安全相关的代码通常涉及敏感信息,因此在分享或分发相关文档时,需要遵守ARM的版权和保密条款。