arm el2与el3_ARMv8 架构与指令集.学习笔记

本文详细介绍了ARMv8架构,包括AArch32和AArch64执行状态的区别,以及Execution State的决定条件。重点讨论了Exception Level(EL0-EL3)的层级、安全特性及其与Execution State的关系,特别是EL2和EL3在安全模式下的应用。此外,还概述了不同Exception Level间的路由控制规则和关键寄存器的功能。
摘要由CSDN通过智能技术生成

第1章 ARMv8简介

1.1基础认识

ARMv8的架构继承以往ARMv7与之前处理器技术的基础,除了现有的16/32bit的Thumb2指令支持外,也向前兼容现有的A32(ARM 32bit)指令集,基于64bit的AArch64架构,除了新增A64(ARM 64bit)指令集外,也扩充了现有的A32(ARM 32bit)和T32(Thumb2 32bit)指令集,另外还新增加了CRYPTO(加密)模块支持。

1.2 相关专业名词解释AArch32描述32bit Execution State

AArch64描述64bit Execution State

A32、T32AArch32 ISA (Instruction Architecture)

A64AArch64 ISA (Instruction Architecture)

Interprocessing描述AArch32和AArch64两种执行状态之间的切换

SIMDSingle-Instruction, Multiple-Data (单指令多数据)

(参考文档:ARMv8-A Architecture reference manual-DDI0487A_g_armv8_arm.pdf)

第2章 Execution State

2.1 提供两种Execution State

• ARMv8 提供AArch32 state和 AArch64 state 两种Execution State,下面是两种Execution State对比.Execution StateNote

AArch32提供13个32bit通用寄存器R0-R12,一个32bit PC指针 (R15)、堆栈指针SP (R13)、链接寄存器LR (R14)

提供一个32bit异常链接寄存器ELR, 用于Hyp mode下的异常返回

提供32个64bit SIMD向量和标量floating-point支持

提供两个指令集A32(32bit)、T32(16/32bit)

兼容ARMv7的异常模型

协处理器只支持CP10CP11CP14CP15

AArch64提供31个64bit通用寄存器X0-X30(W0-W30),其中X30是程序链接寄存器LR

提供一个64bit PC指针、堆栈指针SPx 、异常链接寄存器ELRx

提供32个128bit SIMD向量和标量floating-point支持

定义ARMv8异常等级ELx(x<4),x越大等级越高,权限越大

定义一组PE state寄存器PSTATE(NZCV/DAIF/CurrentEL/SPSel等),用于保存PE当前的状态信息

没有协处理器概念

2.2 决定Execution State的条件

SPSR_EL1.M[4] 决定EL0的执行状态,为0 =>64bit ,否则=>32bit

HCR_EL2.RW 决定EL1的执行状态,为1 =>64bit ,否则=>32bit

SCR_EL3.RW确定EL2 or EL1的执行状态,为1 =>64bit ,否则=>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值