码迷,mamicode.com
首页 > 系统相关 > 详细

Linux异常处理体系结构

时间:2017-10-05 20:02:04      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:跳转   ok6410   logs   控制   cpu   class   detail   指令   有用   

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异常处理体系结构

标签:跳转   ok6410   logs   控制   cpu   class   detail   指令   有用   

原文地址:http://www.cnblogs.com/yangjiguang/p/7629843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!