entry-macro.S 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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_preamble, base, tmp
  29. .endm
  30. .macro arch_ret_to_user, tmp1, tmp2
  31. .endm
  32. .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
  33. ldr \base, =IO_ADDRESS(OMAP_IH1_BASE)
  34. ldr \irqnr, [\base, #IRQ_ITR_REG_OFFSET]
  35. ldr \tmp, [\base, #IRQ_MIR_REG_OFFSET]
  36. mov \irqstat, #0xffffffff
  37. bic \tmp, \irqstat, \tmp
  38. tst \irqnr, \tmp
  39. beq 1510f
  40. ldr \irqnr, [\base, #IRQ_SIR_FIQ_REG_OFFSET]
  41. cmp \irqnr, #0
  42. ldreq \irqnr, [\base, #IRQ_SIR_IRQ_REG_OFFSET]
  43. cmpeq \irqnr, #INT_IH2_IRQ
  44. ldreq \base, =IO_ADDRESS(OMAP_IH2_BASE)
  45. ldreq \irqnr, [\base, #IRQ_SIR_IRQ_REG_OFFSET]
  46. addeqs \irqnr, \irqnr, #32
  47. 1510:
  48. .endm
  49. #elif defined(CONFIG_ARCH_OMAP24XX)
  50. #include <asm/arch/omap24xx.h>
  51. .macro disable_fiq
  52. .endm
  53. .macro get_irqnr_preamble, base, tmp
  54. .endm
  55. .macro arch_ret_to_user, tmp1, tmp2
  56. .endm
  57. .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
  58. ldr \base, =VA_IC_BASE
  59. ldr \irqnr, [\base, #0x98] /* IRQ pending reg 1 */
  60. cmp \irqnr, #0x0
  61. bne 2222f
  62. ldr \irqnr, [\base, #0xb8] /* IRQ pending reg 2 */
  63. cmp \irqnr, #0x0
  64. bne 2222f
  65. ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */
  66. cmp \irqnr, #0x0
  67. 2222:
  68. ldrne \irqnr, [\base, #IRQ_SIR_IRQ]
  69. .endm
  70. .macro irq_prio_table
  71. .endm
  72. #endif