第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 ,否则=>