1.前言

2.异常类型描述

见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文

3. 异常处理路由对比

AArch32、AArch64架构下IRQ 和Data Abort 异常处理流程图对比.

3.1 IRQ 路由

3.1.1.   AArch32 IRQ 路由

图 AArch32 IRQ 路由

3.1.2.    AArch64 IRQ 路由

图 AArch64 IRQ路由

图 AArch64 IRQ向量查找

3.2.     Data Abort 路由

3.2.1.    AArch32 Data Abort 路由

3.2.2.    AArch64 Data Abort 路由

4. 源代码异常入口

4.1     C函数入口

 异常类型

AArch32 State

AArch64 State

所在文件

函数

所在文件

函数

Und

arm/kernel/traps.c

do_undefinstr

Arm64/kernel/traps.c

do_undefinstr

Data Abort

arm/mm/fault.c

do_DataAbort

arm64/mm/fault.c

do_mem_abort

IRQ

arm/kernel/irq.c

asm_do_IRQ

arm64/kernel/irq.c

handle_IRQ

FIQ

       

System Call

       

4.2    上报流程图

例举Data Abort 和 IRQ中断的入口流程图

  • Data Abort 上报

  • IRQ上报

4.3.    异常进入压栈准备

分析64位kernel_entry 压栈代码逻辑(代码路径:kernel/arch/arm64/kernel/entry.S)

压栈准备

说明

• sp指向 #S_LR – #S_FRAME_SIZE 位置

#S_FRAME_SIZE是pt_regs结构图的size

• 依次把x28-x29 … x0-x1 成对压入栈内

每压入一对寄存器,sp指针就移动 -16 =((64/8)*2)字节长度,栈是向地址减少方向增长的.

• 保存sp+#S_FRAME_SIZE数据到x21

add x21, sp, #SP_FRAME_SIZE

• 保存elr_el1到x22

mrs x22, elr_el1

• 保存spsr_el1到x23

mrs x23, spsr_el1

• 把lr、x21写入sp+#S_LR地址内存

保存lr和x21的数据到指定栈内存位置

• 把x22、x23写入sp+#S_PC地址内存

保存elr,spsr数据到指定栈内存位置

4.4.     栈布局

5. 参考文档

[1] DDI0487A_k_armv8_arm_iss10775.pdf

ARMV8 datasheet学习笔记5:异常模型的更多相关文章

  1. ARMV8 datasheet学习笔记3:AArch64应用级体系结构

    1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...

  2. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST

    1.前言 ARMV8系统级编程模型主要包括异常级别.运行状态.安全状态.同步异常.异步异常.DEBUG 本文主要对系统级编程模型做一个概要介绍 2. 异常级别 2.1 Exception level概 ...

  3. ARMV8 datasheet学习笔记1:预备知识

    1. 前言 ARMv8的架构继承以往ARMv7与之前处理器技术的基础; 除了支持现有的16/32bit的Thumb2指令外,也向前兼容现有的A32(ARM 32bit)指令集. 基于64bit的AAr ...

  4. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(3)- 异常

    1.前言 本文介绍异常相关内容,包括异常类型,异常进入,异常返回,异常层次结构,异常的路由等 2.  RESET ARMV8体系结构支持两种类型的RESET Cold reset:Reset PE所有 ...

  5. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(4)- 其它

    1. 前言 2.可配置的指令使能/禁用控制和trap控制 指令使能/禁用 当指令被禁用,则这条指令就会变成未定义 指令Trap控制 控制某条或某些指令在运行时进入陷阱,进入陷阱的指令会产生trap异常 ...

  6. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之存储模型

    1.前言 关于存储系统体系架构,可以概述如下: 存储系统体系结构的形式 VMSA 存储属性   2. 存储系统体系结构 2.1.    地址空间 指令地址空间溢出 指令地址计算((address_of ...

  7. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(2)- 寄存器

    1. 前言 2. 指令运行与异常处理寄存器 ARM体系结构的寄存器分为两类: (1)系统控制和状态报告寄存器 (2)指令处理寄存器,如累加.异常处理 本部分将主要介绍如上第(2)部分的寄存器,分为AA ...

  8. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之VMSA

    1. 前言 2. VMSA概述 2.1 ARMv8 VMSA naming VMSAv8 整个转换机中,地址转换有一个或两个stage VMSAv8-32 由运行AArch32的异常级别来管理 VMS ...

  9. ARMV8 datasheet学习笔记2:概述

    1. 前言 本文主要概括的介绍ARMV8体系结构定义了哪些内容,概括的说: ARM体系结构定义了PE的行为,不会定义具体的实现 ARM体系结构也定义了debug体系结构和trace体系结构 ARM体系 ...

随机推荐

  1. Java新AIO/NIO2:AsynchronousServerSocketChannel和AsynchronousSocketChannel简单服务器-客户端

    Java新AIO/NIO2:AsynchronousServerSocketChannel和AsynchronousSocketChannel简单服务器-客户端用AsynchronousServerS ...

  2. NOIP2018退役记

    退役失败*1. md可能只有一次啊.

  3. BZOJ 3503 [CQOI2014]和谐矩阵

    题目链接 BZOJ 3503 题解 没想到--直接用暴力的\(O((nm)^3)\)算法,居然能过?! 高斯消元解异或方程组. #include <cstdio> #include < ...

  4. 牛客网小白月赛5I区间(差分数组)

    链接:https://www.nowcoder.com/acm/contest/135/I来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536 ...

  5. 基于SpringMVC的文件(增删改查)上传、下载、更新、删除

    一.项目背景 摘要:最近一直在忙着项目的事,3个项目过去了,发现有一个共同的业务,那就是附件的处理,附件包括各种文档,当然还有图片等特殊文件,由于时间的关系,每次都是匆匆忙忙的搞定上线,称这项目的空档 ...

  6. easyui-treegrid的案例

    1.前台html <%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  7. Linux网络基本网络配置

    Linux网络基本网络配置方法介绍 网络信息查看 设置网络地址: cat /etc/sysconfig/network-scripts/ifcfg-eth0 你将会看到: DEVICE=eth0 BO ...

  8. operator new,new operator,placement new的区别

    原文地址:http://www.cnblogs.com/jamesmile/archive/2010/04/17/1714311.html,在此感谢 C++中的operator new与new ope ...

  9. GO语言的进阶之路-网络安全之proxy

    GO语言的进阶之路-网络安全之proxy 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在党的带领下,我们大陆的孩子身心健康还是杠杠的,尤其是像我这种农村孩纸,从来不会像<人 ...

  10. zabbix3.x添加H3C网络设备详解

    zabbix3.x添加H3C网络设备详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 前言: 欢迎加入:高级运维工程师之路 598432640 相信大家在看我的文章之前,也看过其 ...