aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arc/kernel/intc-arcv2.c12
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 */
33void arc_init_IRQ(void) 33void 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);