6.其他注意事项
6.1.抢占SMC对非安全软件的影响
对安全有效负载的yeild SMC调用可以被非安全中断抢占,并且执行可以返回到非安全世界来处理中断(有关让步SMC的详细信息,请参阅SMC调用约定)。在这种情况下,SMC调用尚未完成其执行,执行必须返回到安全有效负载以恢复被抢占的SMC调用。这可以通过发出指示恢复被抢占的SMC的SMC呼叫来实现。
fast SMC不能被抢占,因此这种情况不会发生在fast SMC呼叫中。
在测试安全有效载荷实现中,TSP_FID_RESUME被指定为恢复SMC FID。需要注意的是,TSP_FID_RESUME是一个让步SMC,这意味着它也可以被抢占。假设P.STATE.I=0处于非安全状态,用于发出让步SMC的典型非安全软件序列如下所示:
int rc;
rc = smc(TSP_YIELD_SMC_FID, ...); /* Issue a Yielding SMC call */
/* The pending non-secure interrupt is handled by the interrupt handler
and returns back here. */
while (rc == SMC_PREEMPTED) { /* Check if the SMC call is preempted */
rc
本文档介绍了在安全有效负载中,中断如何抢占SMC调用,特别是非安全中断可能导致SMC执行中断,然后通过特定的恢复SMC(如TSP_FID_RESUME)来恢复中断的SMC。快速SMC不会被抢占。测试期间,非安全软件序列涉及检查SMC是否被抢占,并在抢占发生时发出恢复SMC,直到调用成功或失败。
订阅专栏 解锁全文
300

被折叠的 条评论
为什么被折叠?



