快速链接:
.
👉👉👉Trustzone/TEE/安全 面试100问-目录 👈👈👈
- 付费专栏-付费课程 【购买须知】:
- 联系方式-加入交流群 ----联系方式-加入交流群
- 个人博客笔记导读目录(全部)
背景
插播一个小插曲,一个背景,现在正在写这篇博文,然后群里也有人正在问smc相关的问题。其实总结一下,这也不单单是smc的问题,这属于架构设计的问题。其实我想说的是,在今后的大系统软硬件中,越来越复杂,对安全架构的要求也越来越多…
正文
好了进入正文,调用smc为什么就能直接切换到ATF?
有些人认为,这不是常识吗,你调用smc,当然就进入到了ATF了? 就如同你调用svc指令,cpu就被切换到了EL1一样。有些人把这当作了常识,当作了“公理”,当作了理所当然的东西。
然而,在程序员的世界中,没有“公理”一说,一切都可用代码解释。这其实是有理论依据的,是可以用技术解释的。下面听我详细道来。
svc、hvc、smc都是触发同步异常的指令,你调用smc/hvc/svc,就会自动触发一个同步异常。 如果你调用的是smc,则触发的是target to EL3的同步异常,此时CPU将进入到EL3异常等级,CPU将跳入到VBAR_EL3向量表中的同步异常向量中。 而VBAR_EL3恰好就是我们在ATF里填充的ATF中的向量。
所以你一调用smc,cpu就会自动跳转到VBAR_EL3 + sync_offset。
这也就解释了,为什么,你调用smc就能切换到ATF。