ARMv8学习 —— SP_EL0和SP_ELx

本文介绍了在AArch64状态下,SP_EL0和SP_ELx寄存器的使用规则,包括不同异常级别下如何切换及在异常处理中的角色。通过DS5仿真进行实验验证,展示了在不同异常情况下的SP切换过程和模式状态变化。
摘要由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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值