smc调用的立即值存储在哪里?

时间:2014-11-24 17:38:14

标签: assembly arm raspberry-pi trust-zone

我正在使用带有ARM1176JZF-S处理器的raspberry pi B +上的信任区域扩展。

用于在世界之间切换的smc(安全监视器调用)指令具有以下形式:

"SMC #imm4" eg : smc #0

我试图从smc异常处理程序中检索此值。我最初的假设是它可能存储在R0寄存器中。但是我得到了一些不同于我通过的价值。那么这个值存储在哪里?

1 个答案:

答案 0 :(得分:1)

该值是指令操作码的一部分。您需要在返回地址读取内存,解析操作码并提取立即值。

因为与读取存储寄存器相比,这种操作可能有些昂贵,所以常见的方法是使用处理器寄存器来指定要执行的操作。实际上,ARM开发了"SMC Calling Convention",它建议使用R0作为" SMC功能标识符"和R1-R6作为参数。