Chinaunix

标题: 关于ARM中断处理中的寄存器预留问题 [打印本页]

作者: lli_njupt    时间: 2011-11-30 14:53
标题: 关于ARM中断处理中的寄存器预留问题
内核版本2.6.28

在arch/arm/kernel/entry-armv.S文件中中断处理中的irq_handler宏中:
  1. /*
  2. * Interrupt handling.  Preserves r7, r8, r9
  3. */
  4.         .macro  irq_handler
  5.         get_irqnr_preamble r5, lr
  6. 1:      get_irqnr_and_base r0, r6, r5, lr
  7.         movne   r1, sp
  8.         @
  9.         @ routine called with r0 = irq number, r1 = struct pt_regs *
  10.         @
  11.         adrne   lr, 1b
  12.         bne     asm_do_IRQ
复制代码
在注释中说明对irq_handler的调用需要预留r7-r9寄存器,因为它们用来做内核抢占用,那么编译如何做到在asm_do_IRQ
处理中不使用这三个寄存器的呢? 请分析过ARM中断处理流程的高手不吝赐教!
作者: 塑料袋    时间: 2011-12-02 14:09
ARM中,被调用者用到那个寄存器,就会入栈那个寄存器;在返回到调用者之前恢复这些寄存器。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2