等级 | 值 | 长名称 | 描述 | 调用指令 |
---|---|---|---|---|
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