| /* | 
 |  * arch/arm/mach-ks8695/include/mach/entry-macro.S | 
 |  * | 
 |  * Copyright (C) 2006 Ben Dooks <ben@simtec.co.uk> | 
 |  * Copyright (C) 2006 Simtec Electronics | 
 |  * | 
 |  * Low-level IRQ helper macros for KS8695 | 
 |  * | 
 |  * This file is licensed under  the terms of the GNU General Public | 
 |  * License version 2. This program is licensed "as is" without any | 
 |  * warranty of any kind, whether express or implied. | 
 | */ | 
 |  | 
 | #include <mach/hardware.h> | 
 | #include <mach/regs-irq.h> | 
 |  | 
 | 	.macro  get_irqnr_preamble, base, tmp | 
 | 		ldr	\base, =KS8695_IRQ_VA			@ Base address of interrupt controller | 
 | 	.endm | 
 |  | 
 | 	.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp | 
 | 		ldr	\irqstat, [\base, #KS8695_INTMS]	@ Mask Status register | 
 |  | 
 | 		teq	\irqstat, #0 | 
 | 		beq	1001f | 
 |  | 
 | 		mov	\irqnr, #0 | 
 |  | 
 | 		tst	\irqstat, #0xff | 
 | 		moveq	\irqstat, \irqstat, lsr #8 | 
 | 		addeq	\irqnr, \irqnr, #8 | 
 | 		tsteq	\irqstat, #0xff | 
 | 		moveq	\irqstat, \irqstat, lsr #8 | 
 | 		addeq	\irqnr, \irqnr, #8 | 
 | 		tsteq	\irqstat, #0xff | 
 | 		moveq	\irqstat, \irqstat, lsr #8 | 
 | 		addeq	\irqnr, \irqnr, #8 | 
 | 		tst	\irqstat, #0x0f | 
 | 		moveq	\irqstat, \irqstat, lsr #4 | 
 | 		addeq	\irqnr, \irqnr, #4 | 
 | 		tst	\irqstat, #0x03 | 
 | 		moveq	\irqstat, \irqstat, lsr #2 | 
 | 		addeq	\irqnr, \irqnr, #2 | 
 | 		tst	\irqstat, #0x01 | 
 | 		addeqs	\irqnr, \irqnr, #1 | 
 | 1001: | 
 | 	.endm |