AArch64 异常模型

AArch64 Exception model

privilege:当代软件被分成不同模块,不同模块访问系统或资源有不同的级别。例如kernel space和user space。
在Arm架构中,只有在cpu发出异常(exception)或从异常返回时,privilege level才变化。所以privileges level 基于Exception levels。
每个异常级别(exception level)被编号,编号越大级别越高。


通用规则:
EL0:运行用户应用代码
EL1:运行OS
EL2:被hypervisor使用
EL3:被底层固件(low-level firmware)和安全代码(security code)使用

 

特权类型:

1、memory system
2、访问cpu资源(processor resources)

memory system

   Arm的架构使用虚拟内存,MMU(Memory Management Unit )使软件可以分配内存。这样可以灵活的配置read/write权限,可以隔离privileged和unprivileged的访问权限。

Register Access

在System registers中进行配置。
每个层都有各自的配置寄存器,高级别在特殊情况下可以访问低级别的,如下:
SCTLR_EL1 - Top level system control for EL0 and EL1
SCTLR_EL2 - Top level system control for EL2
SCTLR_EL3 - Top level system control for EL3

Execution and Security states

Execution states

Security state

Changing Execution state

Changing Security state

Implemented Exception levels and Execution states

EL0 and EL1 are the only Exception levels that must be implemented. EL2 and EL3 are optional.

Exception types

异常(Exception)是引起当前执行程序挂起,然后使操作这个异常的代码去执行的任何事件(event)。
在ArmV8中,中断被看作是外部异常。
Arm架构中分两种异种,synchronous exceptions and asynchronous exceptions。

Synchronous exceptions

这种异常是被当前执行的指令(instruction)引起的。意味这Synchronous exceptions和指令执行流(instruction execution streams)是同步的。
1、Synchronous exception可以由于当前将要执行的指令是无效的,这可能是由于在当前的ExceptionLevel是不允许执行的或者被禁用。
2、内存访问的时候也可以引起Synchronous exception。当访问的内存地址不对齐或者MMU权限不允许时,这可以在访问内存前产生exception。
3、Debug exceptions 也是synchronous exception。
ARM架构拥有发起异常的指令(exception-generating instructions):SVC, HVC, and SMC。
这些指令用来实施系统调用(system call),允许低特权请求高特权。

Asynchronous exceptions

这些异常是在外部产生的,异常可以在任何时候产生,不是在特定的execution streams产生的。
包括:

Physical interrupts

SError (System Error)
IRQ
FIQ

Virtual Interrupts

vSError (Virtual System Error)
vIRQ (Virtual IRQ)
vFIQ (Virtual FIQ)

Physical interrupts:用来响应PE(processing element)外部产生的信号。
Virtual Interrupts:可以是由于外部信号产生,也可以是由运行在EL2中的软件发起的。

IRQ and FIQ

IRQ和FIQ被外设中断来使用,在早期Arm架构中FIQ表示更快速更高优先级的中断,在Armv8-A和Armv9-A中,IRQ和FIQ相同。
IRQ和FIQ拥有独立的处理程序,经常用来实施Secure and Non-secure interrupts。

Non-maskable interrupts

2021年, Armv8.8-A和Armv9.3-A, 添加了Non-maskable interrupt (NMI) 支持.
NMI具有superpriority,即使PSTATE设置成不响应中断时,NMI也可以被获取。

SError

1、访问错误的内存的时候,发起的asynchronous abort
2、parity or Error Correction Code (ECC) checking on some RAMs

参考:

《TrustZone for Armv8-A》
Introduction to security:
Documentation – Arm Developer
AArch64 Exception model
Documentation – Arm Developer
Learn the architecture - Providing protection for complex software
Documentation – Arm Developer
Learn the architecture - AArch64 memory management
Documentation – Arm Developer
Learn the architecture - AArch64 memory model
Documentation – Arm Developer

Learn the architecture - TrustZone for AArch64
Documentation – Arm Developer
Realm Management Extension
Documentation – Arm Developer

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值