entry-macro.S 1.8 KB

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