SMC详解

本文详细介绍了SMC(Secure Monitor Call)的功能、配置和应用场景,通过实验验证了不同异常等级和执行状态下的SMC调用,能够进入相应的异常等级并传递参数。测试结果显示,大部分功能符合预期,但在参数传递方面存在疑问。实验涉及EL3、EL2、EL1异常等级及AArch64和AArch32执行状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SMC全称:Secure Monitor Call

目的:进入到EL3异常等级

应用场景:大于等于EL1异常等级下使用(EL0下不能使用)

官方介绍以及使用方式如下:

主要配置:

(1) SCR_EL3.SMD:

(2) HCR_EL2.TSC

 主要功能如下:

实验验证:

功能0

基本配置:安全状态,安全;异常等级EL3;执行状态,AArch64

具体操作:执行SMC #0x1234

操作前后相关寄存器变化对比见下图:

 测试结论:进入到EL3,EC值等于0x17,并且能将值传递到ESR_EL3中的imm16字段中

功能1

基本配置:安全状态,安全;异常等级Supervisor;执行状态,AArch32

具体操作:执行SMC #0x08 

操作前后相关寄存器变化对比见下图:

  测试结论:进入到EL3,EC值等于0x13

  疑问:传递参数不能超过15,并且参数不知道传递到哪里

功能2和功能3

功能4

基本配置:安全状态,非安全;异常等级EL1;执行状态,AArch64

具体操作:执行SMC #0x1234

操作前后相关寄存器变化对比见下图:

  测试结论:进入到EL2,EC值等于0x17,并且能将值传递到ESR_EL2中的imm16字段中

  注:

(1)从EL3切到EL1非安装状态的时候,HCR寄存器RW, bit [31]设置为1,否则设置不成功

(2)HCR寄存器TSC, bit [19]设置为1

功能5

基本配置:安全状态,非安全;异常等级Supervisor;执行状态,AArch32

具体操作:执行SMC #0x8

操作前后相关寄存器变化对比见下图:

测试结论:Hyp mode,EC值等于0x13

 汇总:

结论:除了功能1外,其它功能经验证符合预期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值