Linux异常处理体系结构
Posted 天地有大美而不言
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux异常处理体系结构相关的知识,希望对你有一定的参考价值。
arm11处理器裸机的异常与中断处理参考:
在ARM V4及V4T以后的大部分处理器中,中断向量表的位置可以有两个位置:一个是0,另一个是0xffff0000。可以通过CP15协处理器c1寄存器中V位(bit[13])控制。V和中断向量表的对应关系如下:
V=0 ~ 0x00000000~0x0000001C
V=1 ~ 0xffff0000~0xffff001C 。Linux内核使用0xffff0000。
异常向量的代码很简单,只是一些跳转指令。地址__vectors_start~__vectors_end间的代码就是异常向量,在arch/arm/kernel/entry-armv.S中定义,这些异常向量会被复制到0xffff0000处。
.globl __vectors_start __vectors_start: swi SYS_ERROR0 //复位时,cpu将执行这条指令 b vector_und + stubs_offset //未定义异常时,cpu执行这条指令 ldr pc, .LCvswi + stubs_offset //swi异常 b vector_pabt + stubs_offset //指令预取终止 b vector_dabt + stubs_offset //数据访问终止 b vector_addrexcptn + stubs_offset //没有用到 b vector_irq + stubs_offset //irq异常 b vector_fiq + stubs_offset //fiq异常 .globl __vectors_end __vectors_end:
以上是关于Linux异常处理体系结构的主要内容,如果未能解决你的问题,请参考以下文章
PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段