通过检查ESR寄存器的内容,操作系统或者异常处理程序能够决定如何响应这个异常——可能是终止程序执行,尝试修复错误,或者向用户报告错误信息。 ESR_ELx寄存器(Exception Syndrome Register)在 ARMv8 架构中用于保存导致异常的详细信息,其中x表示 Exception Level(EL1, EL2 或 EL3)。每个ESR_ELx都有相似的格式,
指令中止异常(Instruction Abort exceptions), 此时ESR寄存器的EC 值为0x20 或者0x21, 数据中止异常,Data Abort exceptions, 此时ESR寄存器的EC 值为0x24 或者 0x25: PC对齐错误异常,PC alignment fault exceptions,此时ESR寄存器的EC 值为0x22。 调试异常的观察点异常,Watchpoint exceptions,此时ESR寄存器的EC 值0x...
异常综合表征寄存器ESR_ELn包含的异常信息用以异常处理程序确定异常原因。仅针对同步异常和SError进行更新。因为IRQ或FIQ中断处理程序从通用中断控制器(GIC)寄存器的信息获取状态。 ESR_ELn的BIT[31:26]指示处理程序执行对应的异常,比如: EC == 0b100010,PC alignment fault exception. EC == 0b100101,Data Abort...
Debug exceptions,有一些调试专用寄存器,可以设置这些寄存器,然后触发某些条件来触发异常。比如说硬件断点异常,可以设置某个地址到断点寄存器,执行到该地址表示的指令的时候就会触发一个异常,然后转移到断点处理程序。(我们平时打断点是软件断点不是硬件断点) 异步异常 异步异常是在 CPU 外部产生的,所以与当前的指令流不同...
:附加的目标寄存器或源操作数寄存器,如果不需要设置附加信息,将 crm 设置为 c0 ,否则结果未知。 :提供附加信息比如寄存器的版本号或者访问类型,用于区分同一个编号的不同物理寄存器,可以省略 或 者将其设置为 0 , 否则结果未知。 4.1.2 CP15 寄存器介绍 ...
ESR_ELx(x>0) :同步异常, 异常特征寄存器 FAR_ELx(x>0): 同步异常, 异常时的错误地址 VBAR_ELx(x>0): 向量表基地址寄存器 TTBRn_ELx(n=1,2、x>0):地址翻译基地址寄存器 MAIR_ELx(x>0) :内存属性寄存器 PAR_EL1:物理地址寄存器, 当使用指令操作MMU进行VA到PA的转换时,物理地址由PAR_EL1输出...
R14寄存器又称为链接寄存器(Link Register,LR),在函数调用过程中主要用来保存上一级函数调用者的返回地址。 寄存器R15又称为程序计数器(Program Counter,PC),CPU从内存取指令执行,就是默认从PC保存的地址中取的,每取一次指令,PC寄存器的地址值自动增加。
ESR_ELx(Exception Syndrome Register):异常综合症寄存器,用于存储异常发生时的状态信息,帮助调试和错误处理。 这些系统寄存器根据不同的异常级别(EL0, EL1, EL2, EL3)有不同的实例,如SCTLR_EL1, SCTLR_EL2等,分别对应用户态、内核态、虚拟化和安全态的控制。 发布于 2024-07-26 10:01・浙江 ARM 架构 ...
PSTATE:程序状态寄存器SP_ELx(x>0):在EL1/EL2/EL3 level中,如果spsel=0,则使用SP_ELx(x>0)SP_EL0 :在所有level中,如果spsel=1, 则使用SP_EL0SPSR :save program status register 备份的程序状态寄存器ELR_ELx(x>0):异常链接寄存器,记录着异常时程序的返回地址ESR_ELx(x>0) :同步异常, 异常特征...