美文网首页js css html
AArch64 Exception Levels介绍

AArch64 Exception Levels介绍

作者: 小田BSP | 来源:发表于2023-03-03 21:40 被阅读0次

    一、异常等级

    在操作系统中,软件开发被分成不同的模块,每个模块具有不同的访问系统和处理器资源的级别。例:Linux系统中,内核需要对系统资源进行高级别访问,同时会限制应用程序配置系统的能力。AArch64体系结构通过不同的特权级别(privilege level)来实现这种分离,在arm架构上这种特权级别被称为异常级别(exception level),简称EL

    AArch64 Exception levels见下图:

    image.png

    EL0:无特权模式,所有app应用都在EL0

    EL1:是一个特权模式,能够执行一些特权指令,用于运行各类操作系统,在安全模式则是可信OS

    EL2:提供了对虚拟化的支持。

    EL3:具有最高管理权限,负责安全监测和安全模式切换。

    二、异常类型

    ARM架构包括2种异常:同步异常(Synchronous exceptions)和异步异常(Asynchronous exceptions)。

    1、同步异常

    由正在运行的指令或指令运行的结果,出错造成的异常。同步异常包括:

    1.1)Invalid instruction and trap exceptios:无效的指令和陷阱异常。

    1.2)Memory access:内存访问

    1.3)Exception-generating instructions:例:SVCHVCSMC

    1.4)Debug exceptions

    1.4.1)Breakpoint Instruction exceptions

    1.4.2)Breakpoint exceptions

    1.4.3)Watchpoint exceptions

    1.4.4)Vector Catch exceptions

    1.4.5)Software Step exceptions

    2、异步异常

    不是由运行的指令造成,可在程序运行中的任意时刻发生。异步异常包括:

    2.1)Physical interrupts(例:uart中断)

    2.2)IRQFIQ

    2.3) SError

    2.4)Virtual interrupts

    2.4.1)vSError,Virtual System Error

    2.4.2)vIRQ,Virtual IRQ

    2.4.3)vFIQ,Virtual FIQ

    三、异常切换

    EL0的所有异常(同步和异步异常)都可以将core切换到EL1中。

    EL1的所有异步异常、HVC指令都可以将core切换到EL2中。

    EL2的所有异步异常、SMC指令都可以将core切换到EL3中。

    所有的返回指令都是ERET

    image.png

    SVC(Supervisor Call):当用户空间通过系统调用陷入到内核空间的时候,则最终会通过SVC指令进入到内核空间。

    HVCHypervisor Call):在ARMV8-A架构下,Normal WorldEL1尝试去访问EL2的时候,则会陷入到虚拟化层,其中是通过HVC指令。

    SMC(Secure Monitor Call):用于切换Normal WorldSecure World

    四、异常处理流程

    下图介绍了一个简单的异步异常处理流程。

    image.png

    异步异常发生时,操作流程如下:

    1)将PSTATEProcess state)保存到SPSR_EL1中。

    2)将PC指针保存到ELR_EL1

    3)通过读取虚拟机监控程序配置寄存器HCR_EL2.RWRW位来确定目标执行状态。。

    4)异常级别更改为EL1,跳转到异常向量表里执行。

    5)在异常向量表的每个表项,保存一个异常处理函数的跳转函数,跳转到对应的异常处理函数处理异常。

    当异常处理程序处理完成后,异常返回:

    1)恢复所有寄存器,并执行ERET指令。

    2)从ELR_EL1寄存器恢复PC指针。

    3)从SPSR_EL1寄存器恢复处理器状态。

    参考:

    1、learn_the_architecture-aarch64_exception_model.pdf

    相关文章

      网友评论

        本文标题:AArch64 Exception Levels介绍

        本文链接:https://www.haomeiwen.com/subject/hceeldtx.html