(1)、spsel : (Stack Pointer Select) 2、Stack pointer(sp)寄存器介绍 默认情况下,来了一个异常后,选择当前异常级别的sp,例如来了一个异常到EL1, 那么将自动选择sp_el1做为sp; 但是呢,在高异常等级,通过修改spsel,也可以使用SP_EL0 3、SCR_EL3 :(Secure Configuration Register) NS :0-secure state, ...
在armv8中SCR_EL3寄存器是用于控制security相关配置的,其各bit的定义如下图: 其中irq和fiq用于配置中断触发时会被路由到cpu的哪个异常等级和security状态,它们的定义如下: (1)若将FIQ位配置为0,且当前执行状态低于EL3时,则FIQ不会被路由到EL3,而路由到第一个可以处理该中断的异常等级FEL (2)若将FIQ配置为1,则...
在 Armv8 中 SCR_EL3 寄存器是用于控制 Security 相关配置的,其各 bit 的定义如下图: 其中irq 和 fiq 用于配置中断触发时会被路由到 cpu 的哪个异常等级和 security 状态,它们的定义如下: (1)若将 FIQ 位配置为 0,且当前执行状态低于 EL3 时,则 FIQ 不会被路由到 EL3,而路由到第一个可以处理该中断的异...
当cpu处于EL3时,配置SCR.XXX(XXX=EA或IRQ或FIQ)为0的中断不会被taken,配置SCR.XXX为1的中断将会直接target到EL3。 所以在 linux系统的SCR.IRQ=0、SCR.FIQ=1, optee系统的SCR.IRQ=0、SCR.FIQ=0的场景下,总结如下,当cpu运行在EL3时: SCR_EL3为optee的cpu context时,来了一个G1S,中断将不会被taken SCR...
为了发送虚拟中断到EL0/1,hypervisor必须设置HCR_EL2寄存器中相关的路由标志位。比如,为了使能vIRQ中断信号,必须设置HCR_EL2.IMO标志位。这种设置,将物理IRQ中断路由到EL2,然后,由hypervisor使能虚拟中断,发送信号到EL1。 理论上,可以配置VM接收物理FIQ中断和虚拟IRQ中断。实际上,这是不同寻常的。VM通常只接收虚拟...
在ARMv8架构中,存在四个权限级别:EL0、EL1、EL2和EL3。低级别的权限可以通过触发异常来升级到高级别。具体来说,当在EL0级别执行svc指令时,会触发一个同步异常,导致CPU切换到EL1级别。同样,如果在EL0级别接收到IRQ或FIQ中断,会触发一个异步异常,CPU将根据SCR寄存器中的中断配置,陷入EL1、EL2或EL3中的...
_ELx(x>0): 向量表基地址寄存器TTBRn_ELx(n=1,2、x>0): 地址翻译基地址寄存器MAIR_ELx(x>0) :内存属性寄存器PAR_EL1: 物理地址寄存器, 当使用指令操作MMU进行VA到PA的转换时,物理地址由PAR_EL1输出.SCR_EL3 :安全配置寄存器SCTLR_ELx(x>0): 系统控制寄存器TCR_ELx(x>0): 地址翻译控制寄存器...
1、一些64位寄存器的高32bit,曾经被map到aarch32中的一些寄存器。这些高32bit是unknown状态 2、一些64位寄存器的高32bit,在aarch32中没有使用,这些高32bit还是以前的值; 3、如果是跳转到EL3,EL2是aarch32,那么ELR_EL2的高32bit是unknown 4、以下寄存器,不会再aarch32中使用到 ...
armv8包含EL0-EL3异常等级,其中EL0-EL2在secure和non-secure状态执行,EL3只能在secure状态执行,用于cpu配置和状态切换。scr_el3寄存器控制security相关配置,如cpu安全状态、中断路由。EL3时,cpu维护secure和non-secure状态的上下文。armv8支持总线级扩展,通过AXI总线增加NS secure控制信号,实现内存secure...