entry-macro.S 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /*
  2. * arch/arm/mach-ixp4xx/include/mach/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. #include <mach/hardware.h>
  11. .macro disable_fiq
  12. .endm
  13. .macro get_irqnr_preamble, base, tmp
  14. .endm
  15. .macro arch_ret_to_user, tmp1, tmp2
  16. .endm
  17. .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
  18. ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET)
  19. ldr \irqstat, [\irqstat] @ get interrupts
  20. cmp \irqstat, #0
  21. beq 1001f @ upper IRQ?
  22. clz \irqnr, \irqstat
  23. mov \base, #31
  24. sub \irqnr, \base, \irqnr
  25. b 1002f @ lower IRQ being
  26. @ handled
  27. 1001:
  28. /*
  29. * IXP465/IXP435 has an upper IRQ status register
  30. */
  31. #if defined(CONFIG_CPU_IXP46X) || defined(CONFIG_CPU_IXP43X)
  32. ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET)
  33. ldr \irqstat, [\irqstat] @ get upper interrupts
  34. mov \irqnr, #63
  35. clz \irqstat, \irqstat
  36. cmp \irqstat, #32
  37. subne \irqnr, \irqnr, \irqstat
  38. #endif
  39. 1002:
  40. .endm