entry-macro.S 996 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /*
  2. * include/asm-arm/arch-ixp4xx/entry-macro.S
  3. *
  4. * Low-level IRQ helper macros for IXP4xx-based platforms
  5. *
  6. * This file is licensed under the terms of the GNU General Public
  7. * License version 2. This program is licensed "as is" without any
  8. * warranty of any kind, whether express or implied.
  9. */
  10. .macro disable_fiq
  11. .endm
  12. .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
  13. ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET)
  14. ldr \irqstat, [\irqstat] @ get interrupts
  15. cmp \irqstat, #0
  16. beq 1001f @ upper IRQ?
  17. clz \irqnr, \irqstat
  18. mov \base, #31
  19. sub \irqnr, \base, \irqnr
  20. b 1002f @ lower IRQ being
  21. @ handled
  22. 1001:
  23. /*
  24. * IXP465 has an upper IRQ status register
  25. */
  26. #if defined(CONFIG_CPU_IXP46X)
  27. ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET)
  28. ldr \irqstat, [\irqstat] @ get upper interrupts
  29. mov \irqnr, #63
  30. clz \irqstat, \irqstat
  31. cmp \irqstat, #32
  32. subne \irqnr, \irqnr, \irqstat
  33. #endif
  34. 1002:
  35. .endm