网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: Analog安诺电子网 >> 文章 >> 技术交流 >> 文章正文
  uclinux-2008r1-rc8(bf561)的中断处理(3):trap           ★★★ 【字体:
uclinux-2008r1-rc8(bf561)的中断处理(3):trap
作者:快乐虾    文章来源:http://blog.csdn.net/lights_joy    点击数:    更新时间:2008-5-17    
这部分代码用于处理Exception中断,对于内核而言是相当重要的,其实现在arch\blackfin\mach-common\entry.S文件中
ENTRY(_trap) /* Exception: 4th entry into system event table(supervisor mode)*/
       /* Since the kernel stack can be anywhere, it's not guaranteed to be
        * covered by a CPLB. Switch to an exception stack; use RETN as a
        * scratch register (for want of a better option).
        */
       EX_SCRATCH_REG = sp;
       sp.l = _exception_stack_top;
       sp.h = _exception_stack_top;
       /* Try to deal with syscalls quickly. */
       [--sp] = ASTAT;
       [--sp] = (R7:6, P5:4);
       DEBUG_STOP_HWTRACE(p5, r7)
       r7 = SEQSTAT;             /* reason code is in bit 5:0 */
       r6.l = lo(SEQSTAT_EXCAUSE);
       r6.h = hi(SEQSTAT_EXCAUSE);
       r7 = r7 & r6;
       p5.h = _ex_table;
       p5.l = _ex_table;
       p4 = r7;
       p5 = p5 + (p4 << 2);
       p4 = [p5];
       jump (p4);
 
.Lbadsys:
       r7 = -ENOSYS;            /* signextending enough */
       [sp + PT_R0] = r7;       /* return value from system call */
       jump .Lsyscall_really_exit;
ENDPROC(_trap)
 
在这里EX_SCRATCH_REG定义成RETN这个寄存器。
而_exception_stack_top是在本文件中定义的缓冲区的最高位置。
_exception_stack:
//     .rept 1024
//     .long 0;
//     .endr
       .byte4 _exception_stack_buffer[1024];
_exception_stack_top:
_ex_table是在本文件中定义的函数指针的数组,它指明了所有可能的64种异常的入口:
ENTRY(_ex_table)
       /* entry for each EXCAUSE[5:0]
        * This table must be in sync with the table in ./kernel/traps.c
        * EXCPT instruction can provide 4 bits of EXCAUSE, allowing 16 to be user defined
        */
       .long _ex_syscall       /* 0x00 - User Defined - Linux Syscall */
       .long _ex_soft_bp       /* 0x01 - User Defined - Software breakpoint */
_ex_table.end:
因而,这一段程序就是根据不同的EXCEPTION的类型,调用相应的入口函数进行处理。
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    uclinux-2008r1-rc8(bf561)的
    uclinux-2008r1-rc8(bf561)的
    uclinux-2008R1-RC8(bf561)到
    ADI AD5751 I/V输出驱动方案
    UBUNTU下建立BLACKFIN的UCLI
    怎样避免在DSP系统中出现噪声
    恰当使用D类功放有利于便携设
    细分市场需要产品具有更长的
    uclinux-2008R1-RC8(bf561)到
    uclinux-2008R1-RC8(bf561)到
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    版权所有:Analog安诺电子网 湘ICP备06016315号