mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
[ARM] 3829/1: iop3xx: optimise irq entry macros
Squeeze three instructions out of the iop32x irq demuxer, and nine out of the iop33x irq demuxer by using the hardware vector generator. Signed-off-by: Lennert Buytenhek <[email protected]> Signed-off-by: Russell King <[email protected]>
This commit is contained in:
parent
d7d214e974
commit
7412b10f79
3 changed files with 24 additions and 24 deletions
|
|
@ -16,13 +16,9 @@
|
|||
* Note: only deal with normal interrupts, not FIQ
|
||||
*/
|
||||
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
|
||||
mov \irqnr, #0
|
||||
ldr \base, =IOP3XX_REG_ADDR(0x07D8)
|
||||
ldr \irqstat, [\base] @ Read IINTSRC
|
||||
cmp \irqstat, #0
|
||||
beq 1001f
|
||||
clz \irqnr, \irqstat
|
||||
mov \base, #31
|
||||
subs \irqnr,\base,\irqnr
|
||||
1001:
|
||||
cmp \irqstat, #0
|
||||
clzne \irqnr, \irqstat
|
||||
rsbne \irqnr, \irqnr, #31
|
||||
.endm
|
||||
|
|
|
|||
|
|
@ -12,23 +12,11 @@
|
|||
.macro disable_fiq
|
||||
.endm
|
||||
|
||||
/*
|
||||
* Note: only deal with normal interrupts, not FIQ
|
||||
*/
|
||||
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
|
||||
mov \irqnr, #0
|
||||
ldr \base, =IOP3XX_REG_ADDR(0x7A0)
|
||||
ldr \irqstat, [\base] @ Read IINTSRC0
|
||||
cmp \irqstat, #0
|
||||
bne 1002f
|
||||
ldr \irqstat, [\base, #4] @ Read IINTSRC1
|
||||
ldr \base, =IOP3XX_REG_ADDR(0x07C8)
|
||||
ldr \irqstat, [\base] @ Read IINTVEC
|
||||
cmp \irqstat, #0
|
||||
beq 1001f
|
||||
clz \irqnr, \irqstat
|
||||
rsbs \irqnr,\irqnr,#31 @ recommend by RMK
|
||||
add \irqnr,\irqnr,#IRQ_IOP331_XINT8
|
||||
b 1001f
|
||||
1002: clz \irqnr, \irqstat
|
||||
rsbs \irqnr,\irqnr,#31 @ recommend by RMK
|
||||
1001:
|
||||
ldreq \irqstat, [\base] @ erratum 63 workaround
|
||||
adds \irqnr, \irqstat, #1
|
||||
movne \irqnr, \irqstat, lsr #2
|
||||
.endm
|
||||
|
|
|
|||
Loading…
Reference in a new issue