为什么ARM在ISR结束时处理IPI

时间:2012-12-01 10:50:59

标签: linux arm interrupt smp irq

我正在研究Linux上的IRQ处理。 我有一个问题,为什么我们需要在每个ISR [针对SMP]结束时处理IPI。 IPI有什么特别之处吗?为什么我们不在do_asm_IRQ中处理其他中断。

任何建议都将不胜感激。

  6         .macro  arch_irq_handler_default
  7         get_irqnr_preamble r6, lr
  8 1:      get_irqnr_and_base r0, r2, r6, lr
  9         movne   r1, sp
 10         @
 11         @ routine called with r0 = irq number, r1 = struct pt_regs *
 12         @
 13         adrne   lr, BSYM(1b)
 14         bne     asm_do_IRQ
 15 
 16 #ifdef CONFIG_SMP
 17         /*
 18          * XXX
 19          *
 20          * this macro assumes that irqstat (r2) and base (r6) are
 21          * preserved from get_irqnr_and_base above
 22          */
 23         ALT_SMP(test_for_ipi r0, r2, r6, lr)
 24         ALT_UP_B(9997f)
 25         movne   r1, sp
 26         adrne   lr, BSYM(1b)
 27         bne     do_IPI
 28 #endif

http://lxr.oss.org.cn/source/arch/arm/include/asm/entry-macro-multi.S?v=3.5.2;a=arm

0 个答案:

没有答案