1/* 2 * arch/arm/mach-ixp2000/include/mach/entry-macro.S 3 * 4 * Low-level IRQ helper macros for IXP2000-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 <mach/irqs.h> 11 12 .macro get_irqnr_preamble, base, tmp 13 .endm 14 15 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp 16 17 mov \irqnr, #0x0 @clear out irqnr as default 18 mov \base, #0xfe000000 19 orr \base, \base, #0x00e00000 20 orr \base, \base, #0x08 21 ldr \irqstat, [\base] @ get interrupts 22 23 cmp \irqstat, #0 24 beq 1001f 25 26 clz \irqnr, \irqstat 27 mov \base, #31 28 subs \irqnr, \base, \irqnr 29 30 /* 31 * We handle PCIA and PCIB here so we don't have an 32 * extra layer of code just to check these two bits. 33 */ 34 cmp \irqnr, #IRQ_IXP2000_PCI 35 bne 1001f 36 37 mov \base, #0xfe000000 38 orr \base, \base, #0x00c00000 39 orr \base, \base, #0x00000100 40 orr \base, \base, #0x00000058 41 ldr \irqstat, [\base] 42 43 mov \tmp, #(1<<26) 44 tst \irqstat, \tmp 45 movne \irqnr, #IRQ_IXP2000_PCIA 46 bne 1001f 47 48 mov \tmp, #(1<<27) 49 tst \irqstat, \tmp 50 movne \irqnr, #IRQ_IXP2000_PCIB 51 521001: 53 .endm 54 55