1/*
2 * arch/arm/mach-sa1100/include/mach/entry-macro.S
3 *
4 * Low-level IRQ helper macros for SA1100-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
11		.macro  get_irqnr_preamble, base, tmp
12		mov	\base, #0xfa000000		@ ICIP = 0xfa050000
13		add	\base, \base, #0x00050000
14		.endm
15
16		.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp
17		ldr	\irqstat, [\base]		@ get irqs
18		ldr	\irqnr, [\base, #4]		@ ICMR = 0xfa050004
19		ands	\irqstat, \irqstat, \irqnr
20		mov	\irqnr, #0
21		beq	1001f
22		tst	\irqstat, #0xff
23		moveq	\irqstat, \irqstat, lsr #8
24		addeq	\irqnr, \irqnr, #8
25		tsteq	\irqstat, #0xff
26		moveq	\irqstat, \irqstat, lsr #8
27		addeq	\irqnr, \irqnr, #8
28		tsteq	\irqstat, #0xff
29		moveq	\irqstat, \irqstat, lsr #8
30		addeq	\irqnr, \irqnr, #8
31		tst	\irqstat, #0x0f
32		moveq	\irqstat, \irqstat, lsr #4
33		addeq	\irqnr, \irqnr, #4
34		tst	\irqstat, #0x03
35		moveq	\irqstat, \irqstat, lsr #2
36		addeq	\irqnr, \irqnr, #2
37		tst	\irqstat, #0x01
38		addeqs	\irqnr, \irqnr, #1
391001:
40		.endm
41
42