ARM-v8a异常等级

来自Uotan Wiki · 刷机百科
BigfootACA讨论 | 贡献2024年2月20日 (二) 18:58的版本 (创建页面,内容为“{| class="wikitable" |+ !等级 !值 !长名称 !描述 !调用指令 |- |EL3 |0xC/12 |Secure Monitor |固件或安全监视器 |SMC |- |EL2 |0x8/8 |Hyper Visor |虚拟化管理器 |HVC |- |EL1 |0x4/4 |Super Visor |操作系统内核 |SVC |- |EL0 | - |Application |用户程序 | - |} 每个异常等级都拥有自己的MMU页表,内存可隔离,高等级的环境可以访问低等级的寄存器和内存 当程序执行调用指令时,会进入目标等…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
等级 长名称 描述 调用指令
EL3 0xC/12 Secure Monitor 固件或安全监视器 SMC
EL2 0x8/8 Hyper Visor 虚拟化管理器 HVC
EL1 0x4/4 Super Visor 操作系统内核 SVC
EL0 - Application 用户程序 -

每个异常等级都拥有自己的MMU页表,内存可隔离,高等级的环境可以访问低等级的寄存器和内存

当程序执行调用指令时,会进入目标等级先前设置的向量表(VBAR_ELX)以处理调用

当程序进行跨级调用时,直属上级可以截获并处理调用,并将返回地址设置在ELR寄存器。触发ERET时,将回到低等级的ELR处继续执行

Linux操作系统内核的KVM需要Linux内核以EL2等级进行启动,vhe将会在EL2下保持运行成为Hypervisor

高通平台启动示意图