在AArch64中,有4个异常级别,即EL0-3。ARM站点提到有4个堆栈指针(SP_EL0 / 1/2/3),但只有3个异常链接寄存器(ELR_EL1 / 2/3)和只有3个保存的程序状态寄存器(SPSR_EL1 / 2/3)。
为什么不需要ELR_EL0和SPSR_EL0?
PS对不起,如果这是一个愚蠢的问题。我是ARM体系结构的新手。
按照设计,异常不能以EL0为目标,因此,如果它永远不会发生异常,那么它就无法使机器从其返回。
为了进一步解释(在可选的和更多用途的更高异常级别上有光泽),基本设计是EL1是运行特权系统代码的地方,而EL0是运行非特权用户代码的地方。因此,EL0的工作必不可少,并且对于处理体系结构异常(即需要系统详细知识的低级事物)不是很有用。只有特权软件(通常是OS内核)才有权访问必要的完整硬件和软件状态,以决定是否处理该基本硬件异常意味着例如从交换中静静地调入某些内容,而不是将“软件异常”类型的信号传递给冒犯性的任务,要因为做错了事而将其告之。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句