aboutsummaryrefslogtreecommitdiff
path: root/include/asm-arm/arch-iop13xx/entry-macro.S
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-20 12:14:32 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-20 12:14:32 -0800
commite696268a73f7f59a333624f9abf8ffc9412ee64c (patch)
treedcbb2ae8df180303d391d7a8e22f58e9f3f3f46a /include/asm-arm/arch-iop13xx/entry-macro.S
parent91aa69315ef9a76b8f734438617a2e32812b630f (diff)
parent5a84d159061d914c8dd4aa372ac6e9529c2be453 (diff)
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] 4165/1: S3C24XX: Select CONFIG_NO_IOPORT [ARM] Fix s3c2410 ALSA audio for typedef elimination [ARM] Fix ARM AACI ALSA driver [ARM] fix mach-at91 build breakage [ARM] Fix jornada720 build errors [ARM] Fix iop13xx build error [ARM] Fix build error caused by move of apm [ARM] 4223/1: ixdp2351 : Fix for a define error [ARM] 4187/1: iop: unify time implementation across iop32x, iop33x, and iop13xx [ARM] 4186/1: iop: remove cp6_enable/disable routines [ARM] 4185/2: entry: introduce get_irqnr_preamble and arch_ret_to_user
Diffstat (limited to 'include/asm-arm/arch-iop13xx/entry-macro.S')
-rw-r--r--include/asm-arm/arch-iop13xx/entry-macro.S18
1 files changed, 12 insertions, 6 deletions
diff --git a/include/asm-arm/arch-iop13xx/entry-macro.S b/include/asm-arm/arch-iop13xx/entry-macro.S
index 94c50283dc5..a624a7870c6 100644
--- a/include/asm-arm/arch-iop13xx/entry-macro.S
+++ b/include/asm-arm/arch-iop13xx/entry-macro.S
@@ -19,21 +19,27 @@
.macro disable_fiq
.endm
+ .macro get_irqnr_preamble, base, tmp
+ mrc p15, 0, \tmp, c15, c1, 0
+ orr \tmp, \tmp, #(1 << 6)
+ mcr p15, 0, \tmp, c15, c1, 0 @ Enable cp6 access
+ .endm
+
/*
* Note: a 1-cycle window exists where iintvec will return the value
* of iintbase, so we explicitly check for "bad zeros"
*/
.macro get_irqnr_and_base, irqnr, irqstat, base, tmp
- mrc p15, 0, \tmp, c15, c1, 0
- orr \tmp, \tmp, #(1 << 6)
- mcr p15, 0, \tmp, c15, c1, 0 @ Enable cp6 access
-
mrc p6, 0, \irqnr, c3, c2, 0 @ Read IINTVEC
cmp \irqnr, #0
mrceq p6, 0, \irqnr, c3, c2, 0 @ Re-read on potentially bad zero
adds \irqstat, \irqnr, #1 @ Check for 0xffffffff
movne \irqnr, \irqnr, lsr #2 @ Convert to irqnr
+ .endm
- biceq \tmp, \tmp, #(1 << 6)
- mcreq p15, 0, \tmp, c15, c1, 0 @ Disable cp6 access if no more interrupts
+ .macro arch_ret_to_user, tmp1, tmp2
+ mrc p15, 0, \tmp1, c15, c1, 0
+ ands \tmp2, \tmp1, #(1 << 6)
+ bicne \tmp1, \tmp1, #(1 << 6)
+ mcrne p15, 0, \tmp1, c15, c1, 0 @ Disable cp6 access
.endm