blob: c9e49f04953206050e629adb7ad9690b928aade1 [file] [log] [blame]
Russell Kinga09e64f2008-08-05 16:14:15 +01001/*
2 * arch/arm/mach-shark/include/mach/entry-macro.S
3 *
4 * Low-level IRQ helper macros for Shark platform
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 */
Russell Kinga09e64f2008-08-05 16:14:15 +010010 .macro get_irqnr_preamble, base, tmp
Rob Herringc04dc9a2012-02-28 13:15:43 -060011 mov \base, #0xfe000000
12 orr \base, \base, #0x00e00000
Russell Kinga09e64f2008-08-05 16:14:15 +010013 .endm
14
Russell Kinga09e64f2008-08-05 16:14:15 +010015 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
Russell Kinga09e64f2008-08-05 16:14:15 +010016
17 mov \irqstat, #0x0C
Russell King2342aa22011-06-26 10:04:15 +010018 strb \irqstat, [\base, #0x20] @outb(0x0C, 0x20) /* Poll command */
19 ldrb \irqnr, [\base, #0x20] @irq = inb(0x20) & 7
Russell Kinga09e64f2008-08-05 16:14:15 +010020 and \irqstat, \irqnr, #0x80
21 teq \irqstat, #0
22 beq 43f
23 and \irqnr, \irqnr, #7
24 teq \irqnr, #2
25 bne 44f
2643: mov \irqstat, #0x0C
Russell King2342aa22011-06-26 10:04:15 +010027 strb \irqstat, [\base, #0xa0] @outb(0x0C, 0xA0) /* Poll command */
28 ldrb \irqnr, [\base, #0xa0] @irq = (inb(0xA0) & 7) + 8
Russell Kinga09e64f2008-08-05 16:14:15 +010029 and \irqstat, \irqnr, #0x80
30 teq \irqstat, #0
31 beq 44f
32 and \irqnr, \irqnr, #7
33 add \irqnr, \irqnr, #8
3444: teq \irqstat, #0
35 .endm
36