无线电爱好网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

无线电爱好网 首页 技术应用 单片机 查看内容

ARMv8 异常处理简介

2022-10-13 10:19| 发布者: 闪电| 查看: 6| 评论: 0

摘要: 内核稳定性问题复杂多样,最常见的莫过于“kernel panic”,意为“内核恐慌,不知所措”。这种情况下系统自然无法正常运转,只能自我结束生命,留下死亡信息。诸如:“Unable to handle kernel XXX at virtual addre ...

内核稳定性问题复杂多样,最常见的莫过于“kernel panic”,意为“内核恐慌,不知所措”。这种情况下系统自然无法正常运转,只能自我结束生命,留下死亡信息。诸如:


“Unable to handle kernel XXX at virtual address XXX”


“undefined instruction XXX”


“Bad mode in Error handler detected on CPUX, code 0xbe000011 -- SError”

......


这些死亡信息是系统在什么状态下产生?如何产生?以及如何处理?本文主要从这三个方面介绍ARMv8架构下CPU的异常处理流程。



一、ARMv8异常简介



1.异常级别


不同于Armv7架构采用CPU模式切换的方式进行异常处理,Armv8架构定义了一组全新的异常级别进行异常处理,即EL0至EL3,有如下特性:


  • 如果ELn为异常级别,则n的值增加表示软件执行特权增加。


  • EL0处的执行称为无特权执行,不能处理异常。


  • EL2提供对虚拟化的支持。


  • EL3提供了在两个安全状态(安全状态和非安全状态)之间切换的支持。


一个实现可以不包括所有的异常级别,但都必须包括EL0和EL1。EL2和EL3是可选的。


如下是典型的异常级别使用模型:




2. 同步异常和异步异常


如果满足以下所有条件,则将异常描述为同步的:


  • 由于直接执行某个指令而产生异常。


  • 异常处理程序的返回地址可以表明导致该异常的指令。


  • 异常是精确的。


如果满足以下任一条件,则将异常描述为异步的:


  • 不是因为直接执行某条指令而产生异常。


  • 异常处理程序的返回地址不可以表明导致该异常的指令。


  • 异常是不精确的。



3. 主要寄存器


(1)通用寄存器R0-R30


在基本指令集处理指令时,将使用通用寄存器组。它包括31个通用寄存器R0-R30。这些寄存器可以作为31个64位寄存器X0-X30或31个32位寄存器W0-W30进行访问。


12345下一页

路过

雷人

握手

鲜花

鸡蛋

QQ|关于本站|小黑屋|Archiver|手机版|无线电爱好网 ( 粤ICP备15040352号 ) 无线电爱好技术交流5 无线电爱好技术交流1无线电爱好技术交流9开关电源讨论群LED照明应用、电源无线电爱好技术交流4无线电爱好技术交流8无线电爱好技术交流10无线电爱好技术交流11

粤公网安备 44030702001224号

GMT+8, 2022-10-13 10:19 , Processed in 0.124800 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

返回顶部