entry-macro.S 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. * include/asm-arm/arch-omap/entry-macro.S
  3. *
  4. * Low-level IRQ helper macros for OMAP-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 <asm/hardware.h>
  11. #include <asm/arch/irqs.h>
  12. #if defined(CONFIG_ARCH_OMAP1)
  13. #if defined(CONFIG_ARCH_OMAP730) && \
  14. (defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX))
  15. #error "FIXME: OMAP730 doesn't support multiple-OMAP"
  16. #elif defined(CONFIG_ARCH_OMAP730)
  17. #define INT_IH2_IRQ INT_730_IH2_IRQ
  18. #elif defined(CONFIG_ARCH_OMAP15XX)
  19. #define INT_IH2_IRQ INT_1510_IH2_IRQ
  20. #elif defined(CONFIG_ARCH_OMAP16XX)
  21. #define INT_IH2_IRQ INT_1610_IH2_IRQ
  22. #else
  23. #warning "IH2 IRQ defaulted"
  24. #define INT_IH2_IRQ INT_1510_IH2_IRQ
  25. #endif
  26. .macro disable_fiq
  27. .endm
  28. .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
  29. ldr \base, =IO_ADDRESS(OMAP_IH1_BASE)
  30. ldr \irqnr, [\base, #IRQ_ITR_REG_OFFSET]
  31. ldr \tmp, [\base, #IRQ_MIR_REG_OFFSET]
  32. mov \irqstat, #0xffffffff
  33. bic \tmp, \irqstat, \tmp
  34. tst \irqnr, \tmp
  35. beq 1510f
  36. ldr \irqnr, [\base, #IRQ_SIR_FIQ_REG_OFFSET]
  37. cmp \irqnr, #0
  38. ldreq \irqnr, [\base, #IRQ_SIR_IRQ_REG_OFFSET]
  39. cmpeq \irqnr, #INT_IH2_IRQ
  40. ldreq \base, =IO_ADDRESS(OMAP_IH2_BASE)
  41. ldreq \irqnr, [\base, #IRQ_SIR_IRQ_REG_OFFSET]
  42. addeqs \irqnr, \irqnr, #32
  43. 1510:
  44. .endm
  45. #elif defined(CONFIG_ARCH_OMAP24XX)
  46. #include <asm/arch/omap24xx.h>
  47. .macro disable_fiq
  48. .endm
  49. .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
  50. ldr \base, =VA_IC_BASE
  51. ldr \irqnr, [\base, #0x98] /* IRQ pending reg 1 */
  52. cmp \irqnr, #0x0
  53. bne 2222f
  54. ldr \irqnr, [\base, #0xb8] /* IRQ pending reg 2 */
  55. cmp \irqnr, #0x0
  56. bne 2222f
  57. ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */
  58. cmp \irqnr, #0x0
  59. 2222:
  60. ldrne \irqnr, [\base, #IRQ_SIR_IRQ]
  61. .endm
  62. .macro irq_prio_table
  63. .endm
  64. #endif