Hi,各位专家:
在ARMv7-A架构中,共有四张异常向量表,即Secure状态下的exception table, Non-Secure状态下的exception table,Monitor Mode下的exception table,以及hypervisor模式下的异常向量表,因为在不同Security状态下,VBAR寄存器是banked,所以它可将不同security状态的异常向量表分开,即Secure状态和Non-secure状态对应不同的exception table.
但在ARMv8中,当EL3运行在AArch64状态下时,是不支持这种备份方式的,这意味着当处理器在EL3使用AArch64执行态时,在Secure EL1(运行kernel)下和Non-Secure EL1下(运行secure os)访问的VBAR(或VBAR_EL1)是同一个寄存器,也就是说Secure状态和Non-secure状态对应着同一个exception table,这样在ARMv8下就只有3张异常向量表。
不知我这样理解是否正确?如果正确,那么这岂不是cpu在Secure状态下执行了Non-secure的代码?