Exception Level简介
在ARMv8中首次引入了Exception Level的概念,每个Exception Level代表了不同的特权级别。当然了ARMv7也存在同样的特权级别,只不过名字是用PL定义的。
先来看下ARMv8的Exception Level的定义:
ARMv8将特权级别分为4个level,分别是EL0,EL1,EL2,EL3。而每个level的特权不一样的,特权大小EL0
- Normal World就代表的是正常的世界,比如android手机中linux操作系统就在normal world,
- Secure World就是安全世界,比如android手机中的高通的QSEE就是运行在Secure World
Exception Level含义:
- EL0: 就是用户空间,在Noraml world中比如运行的应用程序,在Secure world就是TA,Trust Application
- EL1:运行操作系统,Noramal World比如Linux操作系统,或者WInce操作系统。在Secure World则就是Trusted OS,比如高通的QSEE, 开源的OP-TEE,豌豆荚的TEE等
- EL2:ARM为了支持虚拟化,设计的Hypervisor层,只有在Noraml world使用。
- EL3:Secure Moniter的作用是用于Noraml world和Secure world切换使用。当noraml world想要访问Secure world需要发送SMC指令进入Secure Moniter层,然后进入到Secure world
获取当前EL
通过系统寄存器CurrentEL获取
访问方法: mrs x0, CurrentEL
CurrentEL只读,不可写
例子:mrs tmp, CurrentEL
cmp tmp, #(1 << 2)
beq cache_disable_el1