Linux异常处理体系结构

Posted 天地有大美而不言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux异常处理体系结构相关的知识,希望对你有一定的参考价值。

arm11处理器裸机的异常与中断处理参考:

【OK6410裸机程序】异常处理

【OK6410裸机程序】按键中断

在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异常处理体系结构的主要内容,如果未能解决你的问题,请参考以下文章

linux异常处理体系结构

Linux驱动之异常处理体系结构简析

Linux异常处理体系结构

PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段

使用片段中的处理程序时出现非法状态异常

Java异常处理机制