root/arch/arm/include/asm/entry-macro-multi.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #include <asm/assembler.h>
   3 
   4 /*
   5  * Interrupt handling.  Preserves r7, r8, r9
   6  */
   7         .macro  arch_irq_handler_default
   8         get_irqnr_preamble r6, lr
   9 1:      get_irqnr_and_base r0, r2, r6, lr
  10         movne   r1, sp
  11         @
  12         @ routine called with r0 = irq number, r1 = struct pt_regs *
  13         @
  14         badrne  lr, 1b
  15         bne     asm_do_IRQ
  16 
  17 #ifdef CONFIG_SMP
  18         /*
  19          * XXX
  20          *
  21          * this macro assumes that irqstat (r2) and base (r6) are
  22          * preserved from get_irqnr_and_base above
  23          */
  24         ALT_SMP(test_for_ipi r0, r2, r6, lr)
  25         ALT_UP_B(9997f)
  26         movne   r1, sp
  27         badrne  lr, 1b
  28         bne     do_IPI
  29 #endif
  30 9997:
  31         .endm
  32 
  33         .macro  arch_irq_handler, symbol_name
  34         .align  5
  35         .global \symbol_name
  36 \symbol_name:
  37         mov     r8, lr
  38         arch_irq_handler_default
  39         ret     r8
  40         .endm

/* [<][>][^][v][top][bottom][index][help] */