xref: /OK3568_Linux_fs/kernel/arch/arm/mach-ebsa110/include/mach/entry-macro.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * arch/arm/mach-ebsa110/include/mach/entry-macro.S
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * Low-level IRQ helper macros for ebsa110 platform.
5*4882a593Smuzhiyun *
6*4882a593Smuzhiyun * This file is licensed under  the terms of the GNU General Public
7*4882a593Smuzhiyun * License version 2. This program is licensed "as is" without any
8*4882a593Smuzhiyun * warranty of any kind, whether express or implied.
9*4882a593Smuzhiyun */
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun#define IRQ_STAT		0xff000000	/* read */
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun	.macro  get_irqnr_preamble, base, tmp
16*4882a593Smuzhiyun	mov	\base, #IRQ_STAT
17*4882a593Smuzhiyun	.endm
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	.macro	get_irqnr_and_base, irqnr, stat, base, tmp
20*4882a593Smuzhiyun	ldrb	\stat, [\base]			@ get interrupts
21*4882a593Smuzhiyun	mov	\irqnr, #0
22*4882a593Smuzhiyun	tst	\stat, #15
23*4882a593Smuzhiyun	addeq	\irqnr, \irqnr, #4
24*4882a593Smuzhiyun	moveq	\stat, \stat, lsr #4
25*4882a593Smuzhiyun	tst	\stat, #3
26*4882a593Smuzhiyun	addeq	\irqnr, \irqnr, #2
27*4882a593Smuzhiyun	moveq	\stat, \stat, lsr #2
28*4882a593Smuzhiyun	tst	\stat, #1
29*4882a593Smuzhiyun	addeq	\irqnr, \irqnr, #1
30*4882a593Smuzhiyun	moveq	\stat, \stat, lsr #1
31*4882a593Smuzhiyun	tst	\stat, #1			@ bit 0 should be set
32*4882a593Smuzhiyun	.endm
33*4882a593Smuzhiyun
34