arm el2与el3_ARMv8学习 —— SP_EL0和SP_ELx

本文深入探讨AArch64架构下不同异常级别(EL2, EL3)与栈指针(SP_EL0, SP_ELx)的关系。在异常处理中,SP自动切换到对应EL的栈指针,可通过PSTATE.SP切换。通过实验验证了异常处理时SP的切换规则。" 81986886,7947634,Java8 Lambda表达式实现List集合条件过滤,"['Java编程', '数据处理', '集合操作', 'Lambda']
摘要由CSDN通过智能技术生成

在AArch64状态下,SP对应的物理寄存器有如下四个(某一时刻只能对应下面其中一个):

SP_EL0和SP_EL1

SP_EL2

SP_EL3

如何使用呢?

1、如果程序运行在EL0,那么使用的是SP_EL0

2、如果程序运行在其他Exception level下,可以使用SP_EL0和当前Exception level所对应的SP_ELx

3、默认情况下,进入异常后,使用的是当前Exception level对应的SP_ELx。即:发生的进入EL1的异常,那么在跳转到EL1的异常处理入口后,会自动切到SP_EL1,此时SP对应的就是SP_EL1. 当然,可以在异常通过操作PSTATE.SP将SP强制切到SP_EL0

4、即便不是在异常处理程序中,也可以通过操作PSTATE.SP将SP强制切到SP_EL0或者SP_ELx

5、比如程序正运行在EL1,此时使用的SP是SP_EL0,突然发生了一个进入EL1的异常,在跳转到异常处理入口后,SP会自动切到SP_EL1,在异常返回后,SP又会自动切回到原先的SP_EL0

6、后缀t和h:

t 表示使用的是SP_EL0

h 表示使用的是SP_ELx

验证

下面使用DS5仿真的实验,验证一下上面的说法。

系统复位后,默认是在EL3,并且是secure模式。

第73行,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值