![](https://img-blog.csdnimg.cn/20200321144410162.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ARMv8-A 架构分析
对ARMv8架构做简单的分析
Loopers
操作系统爱好者
展开
-
ARMv8-A Generic Interrupt Controller(GIC)
本节描述下ARM架构下的中断控制器,The Generic Interrupt Controller(GIC)ARM架构下GIC支持好几个版本,GIC-v1, GIC-v2, GIC-v3, GIC-v4本系列文章重点聚焦在GIC-V3版本,而GIC-V3版本的典型代表就是GIC-500关于GIC-500的特性GIC-500可以最大支持128Cores GIC-500目前只...原创 2020-04-01 18:05:21 · 3045 阅读 · 1 评论 -
ARMv8-A Exception Handling
本节来详细描述下ARMv8-A下的异常处理。异常的概述:当设备正在愉快的执行时候,此时发生了一个异常,处理器就必须暂停当前的任务,转而去处理发生的异常。当异常处理完毕后,处理就会发回到被打断的程序继续执行。此图就是描述异常的处理流程。异常的分类:异常分为同步异常和异步异常,而这两种异常的区别是:同步异常:如果异常的产生是通过执行指令,而且返回结果提供了产生异...原创 2020-03-31 18:26:52 · 1330 阅读 · 0 评论 -
ARMv8-A Process State, PSTATE
在ARMv8架构中,使用PSTATE用来描述当前处理器的状态信息。如下的图描述了PSTATE的每个字段的意义上面是PSTATE的各个bit位的含义,我们可以将其分为三组状态标志位 N Z C V 异常状态控制位 SS IL nRW EL SP 异常屏蔽位 D A I F 下面来详细描述下各个字段的含义:状态标志位 N(...原创 2020-03-30 17:55:59 · 7313 阅读 · 1 评论 -
ARMv8-A vs ARMv7 Registers
ARMv8-A General-Puspose RegistersARM8v-A提供了31个通用寄存器,分别是X0-X30。每个寄存器是64bits,可以在任何Exception Level访问。可以看到ARMv8-A总共提供了31个通用寄存器,分别为X0-X30。其中X29是栈帧寄存器,X30是LR链接寄存器。因为ARMv8-A为了兼容32位应用程序,所以放ARMv8-A中运行3...原创 2020-03-29 13:47:48 · 1191 阅读 · 0 评论 -
ARMv7 Processor modes
在ARMv7中定义了不同的特权级别。分别是PL0, PL1, PL2。而每种特权级别依赖处理器模式Processor modes在ARMv7中定义了九种不同的处理器模式User:就是所谓的用户模式,所处的级别最低,不能访问系统的所有资源。特权级别属于PL0FIQ:Fast IRQ,快速中断模式,特权级别属于PL1IRQ:中断模式,特权级别属于PL1Supervisor...原创 2020-03-27 17:29:37 · 3714 阅读 · 0 评论 -
ARMv8-A Exception Levels
在ARMv8中首次引入了Exception Level的概念,每个Exception Level代表了不同的特权级别。当然了ARMv7也存在同样的特权级别,只不过名字是用PL定义的。先来看下ARMv8的Exception Level的定义:ARMv8将特权级别分为4个level,分别是EL0,EL1,EL2,EL3。而每个level的特权不一样的,特权大小EL0<EL1...原创 2020-03-21 15:08:29 · 5543 阅读 · 0 评论 -
ARMv8-A architecture overview
从今天起,正式学习ARMv8-A架构的知识,其中会涉及到ARMv7-A的一些知识,用来和ARMv8-A做对比使用。学习过程中使用的文档:ARM Architecture Reference Manual for ARMv7, ARMv8 ARM Cortex-A75, A76 Core Technical Reference Manual(TRM) https://develop...原创 2020-03-20 18:32:21 · 2214 阅读 · 0 评论