uclinux-2008r1-rc8(bf561)的中断处理(5):evt_timer

本文详细解析了Blackfin架构中核心定时器中断处理流程。重点介绍了在arch/blackfin/mach-common/interrupt.s文件中实现的_evt_timer事件入口及TIMER_INTERRUPT_ENTRY宏定义,展示了如何保存IPEND寄存器值,并通过位掩码参数调用_common_int_entry。
 
  
这个事件入口在arch/blackfin/mach-common/interrupt.s中实现:
/* interrupt routine for core timer - 6 */
ENTRY(_evt_timer)
     TIMER_INTERRUPT_ENTRY(EVT_IVTMR_P)
在这里有:
/* For timer interrupts, we need to save IPEND, since the user_mode
        macro accesses it to determine where to account time. */
#define TIMER_INTERRUPT_ENTRY(N)                   /
    [--sp] = SYSCFG;                               /
                                          /
    [--sp] = P0;   /*orig_p0*/                      /
    [--sp] = R0;   /*orig_r0*/                      /
    [--sp] = (R7:0,P5:0);                          /
    p0.l = lo(IPEND);                              /
    p0.h = hi(IPEND);                              /
    r1 = [p0];                                     /
    R0 = (N);                                  /
    jump __common_int_entry;
而EVT_IVTMR_P则定义为:
#define EVT_IVTMR_P      0x00000006 /* Timer interrupt bit position */
在此之前还有一句说明:
/**************************************************
 * EVT registers (ILAT, IMASK, and IPEND).
 **************************************************/
可以猜测得到,它就是以位掩码做为参数调用__common_int_entry。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值