entry-macro-multi.S 687 B

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