前言
ARMV8的异常向量表较ARMV7的异常向量表有了很大的变动,但是实际上换汤不换药,做事情的方式变了,但是做的事情还是一样的。本文会详细介绍一下ARMV8的异常向量表。
异常routing
下面是异常发生时,exception level切换表:
我们举两个例子来说明下:
第一个红色框的内容表示:在此种配置下,EL0和EL1状态下产生的异步异常,会导致CPU进入EL1。
第一个红色框的内容表示:在此种配置下,EL0和EL1状态下产生的异步异常,会导致CPU进入EL1,而EL2状态下产生的异常,不会导致exception level切换。
Linux内核只支持EL0和EL1,EL0对应用户态,EL1对应内核态,当CPU运行在用户态时,产生的异步异常会导致CPU切换到EL1,当CPU运行在内核态时,产生的异步异常不会导致exception level的切换。
中断向量表
闲话不多说,我们先来看一下ARMV8异常向量表的定义:
这张表告诉我们以下几点事实:
- 实际上有四张表,每张表有四个异常入口,