最新的ARM双核有一个向量/异常表吗?

时间:2013-07-26 11:10:39

标签: exception-handling arm interrupt-handling

大多数 ARM双核或多核系统中,异常/向量表似乎只有ONE和ONE - @典型的0x0000或0xffff0000地址。   一个例外(没有双关语意图:-)似乎是cortex-M3,其中有一个寄存器VTOR(可能每个核心)有一个变量/动态异常/向量表基地址。

然而,intel x86多核架构支持多个IDT(每个核心都有多个IDTR寄存器)。

因此,如果我们要设计一个新的操作系统(中断处理方案),我发现它有点限制,当GIC中断任何一个时,对于不同的内核,对于单个异常(比如FIQ),我们不能有不同的ISR逻辑ARM核心

当然,可以说可以链接和/或共享中断,使用自旋锁这样的同步机制,但是再次......似乎是对我的限制。

为什么ARM不会在所有最新的ARM多核/版本上将其作为标准功能(如cortex-M3 VTOR)?

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

作为任何可执行代码位置,向量的地址都受MMU转换的影响,因此您可以将它们放在物理内存中的任何位置。可能你甚至可以为不同的核心提供不同的向量(通过不同的MMU表)。 Linux使用"高向量"位puts them at 0xFFFF0000,但简单的ARM机器不太可能有超过3GB的RAM。

另见Relocate the ARM exception vectors?