Commit 3b581f54 authored by Pavel Pisa's avatar Pavel Pisa Committed by Russell King

[ARM] 4171/1: i.MX/MX1 optimize interrupt source retrieval

The macro "get_irqnr_and_base" in "entry-macro.S" optimized
according to Lennert Buytenhek suggestion.

Comments from Pavel Pisa:

 Sascha has approved patch some days ago
Signed-off-by: default avatarPavel Pisa <pisa@cmp.felk.cvut.cz>
Acked-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent cb36bb75
...@@ -13,19 +13,13 @@ ...@@ -13,19 +13,13 @@
.endm .endm
#define AITC_NIVECSR 0x40 #define AITC_NIVECSR 0x40
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
ldr \irqstat, =IO_ADDRESS(IMX_AITC_BASE) ldr \base, =IO_ADDRESS(IMX_AITC_BASE)
@ Load offset & priority of the highest priority @ Load offset & priority of the highest priority
@ interrupt pending. @ interrupt pending.
ldr \irqnr, [\irqstat, #AITC_NIVECSR] ldr \irqstat, [\base, #AITC_NIVECSR]
@ Shift off the priority leaving the offset or @ Shift off the priority leaving the offset or
@ "interrupt number" @ "interrupt number", use arithmetic shift to
mov \irqnr, \irqnr, lsr #16 @ transform illegal source (0xffff) as -1
ldr \irqstat, =1 @ dummy compare mov \irqnr, \irqstat, asr #16
ldr \base, =0xFFFF // invalid interrupt adds \tmp, \irqnr, #1
cmp \irqnr, \base
bne 1001f
ldr \irqstat, =0
1001:
tst \irqstat, #1 @ to make the condition code = TRUE
.endm .endm
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment