entry-macro.S 845 B

12345678910111213141516171819202122232425262728293031323334
  1. /*
  2. * Low-level IRQ helper macros for Gemini platform.
  3. *
  4. * Copyright (C) 2001-2006 Storlink, Corp.
  5. * Copyright (C) 2008-2009 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
  6. *
  7. * This file is licensed under the terms of the GNU General Public
  8. * License version 2. This program is licensed "as is" without any
  9. * warranty of any kind, whether express or implied.
  10. */
  11. #include <mach/hardware.h>
  12. #define IRQ_STATUS 0x14
  13. .macro get_irqnr_preamble, base, tmp
  14. .endm
  15. .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
  16. ldr \irqstat, =IO_ADDRESS(GEMINI_INTERRUPT_BASE + IRQ_STATUS)
  17. ldr \irqnr, [\irqstat]
  18. cmp \irqnr, #0
  19. beq 2313f
  20. mov \tmp, \irqnr
  21. mov \irqnr, #0
  22. 2312:
  23. tst \tmp, #1
  24. bne 2313f
  25. add \irqnr, \irqnr, #1
  26. mov \tmp, \tmp, lsr #1
  27. cmp \irqnr, #31
  28. bcc 2312b
  29. 2313:
  30. .endm