SPSR :save program status register 备份的程序状态寄存器 ELR_ELx(x>0):异常链接寄存器,记录着异常时程序的返回地址 ESR_ELx(x>0) :同步异常, 异常特征寄存器 FAR_ELx(x>0): 同步异常, 异常时的错误地址 VBAR_ELx(x>0): 向量表基地址寄存器 TTBRn_ELx(n=1,2、x>0):地址翻译基地址寄存器 MAIR_...
从SPSR_ELx中恢复PSTATE寄存器的状态 四、异常处理的路由 SCR_EL3 HCR_EL2 栈的选择 我们可以通过SPSel寄存器来配置SP。SPSel寄存器中的SP字段设置为0表示所有的EL中使用SP_EL0作为栈指针寄存器,设置为1表示使用SP_ELx作为栈指针寄存器 ARMV8异常向量表 ARMV8向量表有如下特点 除EL0之后,每个EL都有自己的异...
5.1 备份程序状态寄存器(SPSR_ELx) 当异常发生时,处理器会将PSTATE寄存器的值保存到当前异常级别对应的SPSR_ELx寄存器;当异常返回时(eret),处理器会将SPSR_ELx寄存器的值恢复到PSTATE寄存器。这是硬件自动行为,不需要编程人员操作。 AArch64下各域的含义: N 负数标志位,如果结果为负数,则N=1;如果结果为非负数...
这些状态被统称为处理器状态(PSTATE)。 该程序和备份程序状态寄存器(SPSR_ELx)是一对。当异常发生时,处理器会将PSTATE寄存器的值保存到当前异常级别对应的SPSR_ELx寄存器;当异常返回时(eret),处理器会将SPSR_ELx寄存器的值恢复到PSTATE寄存器。这是硬件自动行为,不需要编程人员操作。 AArch64的处理器状态或PSTAT...
可以看到,此时SPSel的值是1,Mode的值为EL3h,说明此时SP用的是SP_ELx。此时SPSR_EL3的值是0x3CC,SPSR的含义如下: M[3:0]的值是0xC,含义如下,表示发生异常前系统的模式和状态:AArch64、EL3、SP_EL0 下面是异常处理函数: 1//2// Current EL with SP03//4el3_vectors:5c0sync3:6mrs x0, elr_el...
e. 切换到对应目标异常等级,跳转到异常向量表执行 以上都是处理器自动完成的,OS所需要做的事就是从中断向量表开始,根据发生的异常类型,跳转到合适的异常向量。当异常处理完后,执行 eret 指令从异常返回。eret 指令会从 ELR_ELx 中恢复 PC 指针并且从 SPSR_ELx 中恢复到 PSTATE 中。
PC从ELR_ELx恢复 PSTATE从SPSR_ELx恢复 11 中断的标记 在gicv3中断控制器中,对中断进行了分组:Group0、Secure Group1、Non-secure Group1。当一个中断进来的时候,cpu interface会根据中断的分组类型和当前PE的security状态来决定是标记为IRQ还是FIQ 12 中断的路由 ...
SP_ELx 64bit 若PSTATE.M[0] ==1,则每个ELx选择SP_ELx,否则选择同一个SP_EL0 ELR_ELx 64bit 异常链接寄存器,保存异常进入ELx的异常地址(x={0,1,2,3}) PC 64bit 程序计数器,俗称PC指针,总是指向即将要执行的下一条指令 SPSR_ELx
4 个不同异常等级的 SP_ELx 在其他任何异常级别执行时,可以将处理器配置为使用SP_EL0或配置为对应该异常级别的堆栈指针SP_ELx 软件可以在目标异常级别执行的时候通过更新PSTATE.SP来指向SP_EL0的堆栈指针 3 个不同异常等级的 SPSR_ELx saved processor state register ,保存执行异常前的 PSTATE 状态值 ...
目录1、ARM Core的扩展 : 增加SCR.NS bit位 2、ELx级别的切换过程 ★★★ 友情链接 : 个人博客导读首页—点击此处 ★★★ 1、ARM Core的扩展 : 增加SCR.NS bit位 在ARMv8中,增加了SCR_EL3寄存器 只有SCR_EL3,没有SCR_EL1和SCR_EL2 只有EL3等级下才能读写此寄存器. NS 标记processor elemen... ...