各位专家:
目前正在学习ARMv8 Arch Ref Manual.
D1.10.2 Exception vectors有点疑惑:
1. Table D1-6 定义了一个Vector Table应该具有的items
我们假定一个ARMv8 SOC实现了4个EL:EL0 / EL1 / EL2 / EL3
根据ARMv8 ARM手册:每一个EL,都有自己对应的Vector Table.
那么:
EL0 / EL1 / EL2 / EL3 :它们各自的Vector Table,应该是什么样的?
比如:
(1) EL0的Vector Table:应该有2个Block :
Current Exception level with SP_EL0
Current Exception level with SP_ELx, x>0
(2) EL1的Vector Table:应该有4个Block :
EL0 that is using AARCH64
EL0 that is using AARCH32
我的理解对吗?
> 1. 前2个block: Current EL with SP_EL0 / SP_ELx> 能举个例子吗?
"with SP_EL0" means using the application's SP."with SP_ELx" means using the current EL's SP.
As far as I know, the purpose of differentiating SP_EL0 and SP_ELx is that the OS can prevent its own stack from overflow (which is critical for the system) by using the application's stack pointer (which is not as critical).
> 2. 基于你回复的帖子中所举例子:> (1) EL2是hypervisor,运行在AARCH64。> VBAR_EL2的Vector table,它的4个block是:> Current EL with SP_EL0 > Current EL with SP_ELx> 第3个block是EL1 Aarch64吗?
Yes.
> 第4个block应该是EL1 Aarch32吗?
Yes. > (2) EL0中发生的IRQ,可以通过register来控制它的target_EL=EL2,即:它想让HyperVisor来处理?
Yes. See HCR_EL2:AMOIMOFMO
hi, feng:
Thanks a lot