diff options
Diffstat (limited to 'arch/arc/kernel/intc-arcv2.c')
-rw-r--r-- | arch/arc/kernel/intc-arcv2.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/arc/kernel/intc-arcv2.c b/arch/arc/kernel/intc-arcv2.c index 4d3166f9bbc9..f928795fd07a 100644 --- a/arch/arc/kernel/intc-arcv2.c +++ b/arch/arc/kernel/intc-arcv2.c | |||
@@ -32,7 +32,7 @@ struct bcr_irq_arcv2 { | |||
32 | */ | 32 | */ |
33 | void arc_init_IRQ(void) | 33 | void arc_init_IRQ(void) |
34 | { | 34 | { |
35 | unsigned int tmp, irq_prio; | 35 | unsigned int tmp, irq_prio, i; |
36 | struct bcr_irq_arcv2 irq_bcr; | 36 | struct bcr_irq_arcv2 irq_bcr; |
37 | 37 | ||
38 | struct aux_irq_ctrl { | 38 | struct aux_irq_ctrl { |
@@ -71,6 +71,16 @@ void arc_init_IRQ(void) | |||
71 | irq_prio + 1, ARCV2_IRQ_DEF_PRIO, | 71 | irq_prio + 1, ARCV2_IRQ_DEF_PRIO, |
72 | irq_bcr.firq ? " FIRQ (not used)":""); | 72 | irq_bcr.firq ? " FIRQ (not used)":""); |
73 | 73 | ||
74 | /* | ||
75 | * Set a default priority for all available interrupts to prevent | ||
76 | * switching of register banks if Fast IRQ and multiple register banks | ||
77 | * are supported by CPU. | ||
78 | */ | ||
79 | for (i = NR_EXCEPTIONS; i < irq_bcr.irqs + NR_EXCEPTIONS; i++) { | ||
80 | write_aux_reg(AUX_IRQ_SELECT, i); | ||
81 | write_aux_reg(AUX_IRQ_PRIORITY, ARCV2_IRQ_DEF_PRIO); | ||
82 | } | ||
83 | |||
74 | /* setup status32, don't enable intr yet as kernel doesn't want */ | 84 | /* setup status32, don't enable intr yet as kernel doesn't want */ |
75 | tmp = read_aux_reg(ARC_REG_STATUS32); | 85 | tmp = read_aux_reg(ARC_REG_STATUS32); |
76 | tmp |= STATUS_AD_MASK | (ARCV2_IRQ_DEF_PRIO << 1); | 86 | tmp |= STATUS_AD_MASK | (ARCV2_IRQ_DEF_PRIO << 1); |