【问题标题】:Where is the smc call's immediate value is stored?smc 调用的立即值存储在哪里?
【发布时间】:2014-11-24 17:38:14
【问题描述】:

我正在开发具有 ARM1176JZF-S 处理器的树莓派 B+ 上的信任区扩展。

用于在世界之间切换的 smc (Secure Monitor Call) 指令的格式为:

"SMC #imm4" eg : smc #0

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

【问题讨论】:

    标签: assembly arm raspberry-pi trust-zone


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 2018-11-09
      • 1970-01-01
      • 2018-06-04
      • 2018-03-13
      • 1970-01-01
      相关资源
      最近更新 更多