entry-macro.S 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * Low-level IRQ helper macros for Nomadik platforms
  3. *
  4. * This file is licensed under the terms of the GNU General Public
  5. * License version 2. This program is licensed "as is" without any
  6. * warranty of any kind, whether express or implied.
  7. */
  8. #include <mach/hardware.h>
  9. #include <mach/irqs.h>
  10. .macro disable_fiq
  11. .endm
  12. .macro get_irqnr_preamble, base, tmp
  13. ldr \base, =IO_ADDRESS(NOMADIK_IC_BASE)
  14. .endm
  15. .macro arch_ret_to_user, tmp1, tmp2
  16. .endm
  17. .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
  18. /* This stanza gets the irq mask from one of two status registers */
  19. mov \irqnr, #0
  20. ldr \irqstat, [\base, #VIC_REG_IRQSR0] @ get masked status
  21. cmp \irqstat, #0
  22. bne 1001f
  23. add \irqnr, \irqnr, #32
  24. ldr \irqstat, [\base, #VIC_REG_IRQSR1] @ get masked status
  25. 1001: tst \irqstat, #15
  26. bne 1002f
  27. add \irqnr, \irqnr, #4
  28. movs \irqstat, \irqstat, lsr #4
  29. bne 1001b
  30. 1002: tst \irqstat, #1
  31. bne 1003f
  32. add \irqnr, \irqnr, #1
  33. movs \irqstat, \irqstat, lsr #1
  34. bne 1002b
  35. 1003: /* EQ will be set if no irqs pending */
  36. .endm