summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNélio Laranjeiro2013-01-11 15:46:31 +0100
committerNélio Laranjeiro2013-01-18 14:49:02 +0100
commitd11822665ae8767d15149711792beda8cc8a277a (patch)
tree6ec7cd91031dd7a63a99429c281c867b133b4cda
parent56f3be367dbef4ac789a07dc42334c8a316b3e20 (diff)
polux/linux/inc/asm-arm/arch-mse500: remove GIC prio level mask, closes #3574
RTAI schedules under IRQ so it is necessary to unmask all interrupt from the GIC.
-rw-r--r--polux/linux-2.6.10/include/asm-arm/arch-mse500/entry-macro.S36
1 files changed, 2 insertions, 34 deletions
diff --git a/polux/linux-2.6.10/include/asm-arm/arch-mse500/entry-macro.S b/polux/linux-2.6.10/include/asm-arm/arch-mse500/entry-macro.S
index 39fe9d372e..8c62f54317 100644
--- a/polux/linux-2.6.10/include/asm-arm/arch-mse500/entry-macro.S
+++ b/polux/linux-2.6.10/include/asm-arm/arch-mse500/entry-macro.S
@@ -33,15 +33,6 @@
ldr \base, =IO_ADDRESS(ARM_ICTL_BASE)
- /* Store previous priority level in a table (in case we preempted
- * a running interrupt). */
- ldr \level, [\base, #IRQ_PLEVEL_OFFSET]
- mov \tmp, #1
- mov \level, \tmp, lsl \level
- ldr \tmp, .irqpriotable
- orr \tmp, \tmp, \level
- str \tmp, .irqpriotable
-
1:
/* Get current interruption priority level (in order to update
* final status register). */
@@ -57,17 +48,10 @@
cmp \level, \tmp
bne 1b
- /* Mask lower and same priority interrupts. */
- add \level, \level, #1
+ /* Enable IRQ of all priorities. */
+ mov \level, #0
str \level, [\base, #IRQ_PLEVEL_OFFSET]
- /* Disable all interrupts if we are on the maximum priority level. */
- cmp \level, #16
- bne 2f
- mov \tmp, #0xFFFFFFFF
- str \tmp, [\base, #IRQ_INTMASK_OFFSET_L]
- str \tmp, [\base, #IRQ_INTMASK_OFFSET_H]
-
2:
clz \irqnr, \irqnr @ find the upper active IRQ
cmp \irqnr, #32 @ is there a pending IRQ in the first 32 sources
@@ -98,22 +82,6 @@
.macro restore_irq_level, level, tmp, table
- /* Get previous priority level (in case we preempted a running
- * interrupt) and update the table. */
- ldr \table, .irqpriotable @ find the last irq level
- clz \level, \table @ stored in .irqpriotable
- rsb \level, \level, #31
- mov \tmp, #1
- mov \tmp, \tmp, lsl \level
- bic \table, \table, \tmp @ suppr this priority in .irqpriotable
- str \table, .irqpriotable
-
- /* Set the previous priority level. */
- ldr \tmp, =IO_ADDRESS(ARM_ICTL_BASE) @ change to this priority
- str \level, [\tmp, #IRQ_PLEVEL_OFFSET]
- mov \table, #0
- str \table, [\tmp, #IRQ_INTMASK_OFFSET_L]
- str \table, [\tmp, #IRQ_INTMASK_OFFSET_H]
.endm
/* This macro is called only for MSE500 platform because some processing