diff options
author | Greg Ungerer <gerg@uclinux.org> | 2009-05-19 00:38:08 -0400 |
---|---|---|
committer | Greg Ungerer <gerg@uclinux.org> | 2009-09-15 19:43:50 -0400 |
commit | f2154bef817ac3d0ea67b52526fd8e88898b66f9 (patch) | |
tree | 3ffa5cf5c3ec82a59f75728a580bd9332a32ebee /arch/m68knommu/platform | |
parent | 5187995f0a9253e915dfee83684eae7b692213e6 (diff) |
m68knommu: merge old ColdFire interrupt controller masking macros
Currently the code that supports setting the old style ColdFire interrupt
controller mask registers is macros in the include files of each of the
CPU types. Merge all these into a set of real masking functions in the
old Coldfire interrupt controller code proper. All the macros are basically
the same (excepting a register size difference on really early parts).
Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Diffstat (limited to 'arch/m68knommu/platform')
-rw-r--r-- | arch/m68knommu/platform/5206/config.c | 11 | ||||
-rw-r--r-- | arch/m68knommu/platform/5206e/config.c | 12 | ||||
-rw-r--r-- | arch/m68knommu/platform/5249/config.c | 11 | ||||
-rw-r--r-- | arch/m68knommu/platform/5307/config.c | 12 | ||||
-rw-r--r-- | arch/m68knommu/platform/5407/config.c | 12 | ||||
-rw-r--r-- | arch/m68knommu/platform/coldfire/intc.c | 59 |
6 files changed, 83 insertions, 34 deletions
diff --git a/arch/m68knommu/platform/5206/config.c b/arch/m68knommu/platform/5206/config.c index 481617a23d09..0dce2383320d 100644 --- a/arch/m68knommu/platform/5206/config.c +++ b/arch/m68knommu/platform/5206/config.c | |||
@@ -49,11 +49,11 @@ static void __init m5206_uart_init_line(int line, int irq) | |||
49 | if (line == 0) { | 49 | if (line == 0) { |
50 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); | 50 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); |
51 | writeb(irq, MCFUART_BASE1 + MCFUART_UIVR); | 51 | writeb(irq, MCFUART_BASE1 + MCFUART_UIVR); |
52 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); | 52 | mcf_clrimr(MCFINTC_UART0); |
53 | } else if (line == 1) { | 53 | } else if (line == 1) { |
54 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); | 54 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); |
55 | writeb(irq, MCFUART_BASE2 + MCFUART_UIVR); | 55 | writeb(irq, MCFUART_BASE2 + MCFUART_UIVR); |
56 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); | 56 | mcf_clrimr(MCFINTC_UART1); |
57 | } | 57 | } |
58 | } | 58 | } |
59 | 59 | ||
@@ -75,13 +75,13 @@ void mcf_settimericr(unsigned int timer, unsigned int level) | |||
75 | 75 | ||
76 | if (timer <= 2) { | 76 | if (timer <= 2) { |
77 | switch (timer) { | 77 | switch (timer) { |
78 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFSIM_IMR_TIMER2; break; | 78 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFINTC_TIMER2; break; |
79 | default: icr = MCFSIM_TIMER1ICR; imr = MCFSIM_IMR_TIMER1; break; | 79 | default: icr = MCFSIM_TIMER1ICR; imr = MCFINTC_TIMER1; break; |
80 | } | 80 | } |
81 | 81 | ||
82 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); | 82 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); |
83 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; | 83 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; |
84 | mcf_setimr(mcf_getimr() & ~imr); | 84 | mcf_clrimr(imr); |
85 | } | 85 | } |
86 | } | 86 | } |
87 | 87 | ||
@@ -100,7 +100,6 @@ void m5206_cpu_reset(void) | |||
100 | 100 | ||
101 | void __init config_BSP(char *commandp, int size) | 101 | void __init config_BSP(char *commandp, int size) |
102 | { | 102 | { |
103 | mcf_setimr(MCFSIM_IMR_MASKALL); | ||
104 | mach_reset = m5206_cpu_reset; | 103 | mach_reset = m5206_cpu_reset; |
105 | } | 104 | } |
106 | 105 | ||
diff --git a/arch/m68knommu/platform/5206e/config.c b/arch/m68knommu/platform/5206e/config.c index 29e565a44431..08ef7e268989 100644 --- a/arch/m68knommu/platform/5206e/config.c +++ b/arch/m68knommu/platform/5206e/config.c | |||
@@ -50,11 +50,11 @@ static void __init m5206e_uart_init_line(int line, int irq) | |||
50 | if (line == 0) { | 50 | if (line == 0) { |
51 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); | 51 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); |
52 | writeb(irq, MCFUART_BASE1 + MCFUART_UIVR); | 52 | writeb(irq, MCFUART_BASE1 + MCFUART_UIVR); |
53 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); | 53 | mcf_clrimr(MCFINTC_UART0); |
54 | } else if (line == 1) { | 54 | } else if (line == 1) { |
55 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); | 55 | writel(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); |
56 | writeb(irq, MCFUART_BASE2 + MCFUART_UIVR); | 56 | writeb(irq, MCFUART_BASE2 + MCFUART_UIVR); |
57 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); | 57 | mcf_clrimr(MCFINTC_UART1); |
58 | } | 58 | } |
59 | } | 59 | } |
60 | 60 | ||
@@ -76,13 +76,13 @@ void mcf_settimericr(unsigned int timer, unsigned int level) | |||
76 | 76 | ||
77 | if (timer <= 2) { | 77 | if (timer <= 2) { |
78 | switch (timer) { | 78 | switch (timer) { |
79 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFSIM_IMR_TIMER2; break; | 79 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFINTC_TIMER2; break; |
80 | default: icr = MCFSIM_TIMER1ICR; imr = MCFSIM_IMR_TIMER1; break; | 80 | default: icr = MCFSIM_TIMER1ICR; imr = MCFINTC_TIMER1; break; |
81 | } | 81 | } |
82 | 82 | ||
83 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); | 83 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); |
84 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; | 84 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; |
85 | mcf_setimr(mcf_getimr() & ~imr); | 85 | mcf_clrimr(imr); |
86 | } | 86 | } |
87 | } | 87 | } |
88 | 88 | ||
@@ -101,8 +101,6 @@ void m5206e_cpu_reset(void) | |||
101 | 101 | ||
102 | void __init config_BSP(char *commandp, int size) | 102 | void __init config_BSP(char *commandp, int size) |
103 | { | 103 | { |
104 | mcf_setimr(MCFSIM_IMR_MASKALL); | ||
105 | |||
106 | #if defined(CONFIG_NETtel) | 104 | #if defined(CONFIG_NETtel) |
107 | /* Copy command line from FLASH to local buffer... */ | 105 | /* Copy command line from FLASH to local buffer... */ |
108 | memcpy(commandp, (char *) 0xf0004000, size); | 106 | memcpy(commandp, (char *) 0xf0004000, size); |
diff --git a/arch/m68knommu/platform/5249/config.c b/arch/m68knommu/platform/5249/config.c index 365fb6c52700..7261a3d28adc 100644 --- a/arch/m68knommu/platform/5249/config.c +++ b/arch/m68knommu/platform/5249/config.c | |||
@@ -48,11 +48,11 @@ static void __init m5249_uart_init_line(int line, int irq) | |||
48 | if (line == 0) { | 48 | if (line == 0) { |
49 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); | 49 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); |
50 | writeb(irq, MCF_MBAR + MCFUART_BASE1 + MCFUART_UIVR); | 50 | writeb(irq, MCF_MBAR + MCFUART_BASE1 + MCFUART_UIVR); |
51 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); | 51 | mcf_clrimr(MCFINTC_UART0); |
52 | } else if (line == 1) { | 52 | } else if (line == 1) { |
53 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); | 53 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); |
54 | writeb(irq, MCF_MBAR + MCFUART_BASE2 + MCFUART_UIVR); | 54 | writeb(irq, MCF_MBAR + MCFUART_BASE2 + MCFUART_UIVR); |
55 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); | 55 | mcf_clrimr(MCFINTC_UART1); |
56 | } | 56 | } |
57 | } | 57 | } |
58 | 58 | ||
@@ -75,13 +75,13 @@ void mcf_settimericr(unsigned int timer, unsigned int level) | |||
75 | 75 | ||
76 | if (timer <= 2) { | 76 | if (timer <= 2) { |
77 | switch (timer) { | 77 | switch (timer) { |
78 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFSIM_IMR_TIMER2; break; | 78 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFINTC_TIMER2; break; |
79 | default: icr = MCFSIM_TIMER1ICR; imr = MCFSIM_IMR_TIMER1; break; | 79 | default: icr = MCFSIM_TIMER1ICR; imr = MCFINTC_TIMER1; break; |
80 | } | 80 | } |
81 | 81 | ||
82 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); | 82 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); |
83 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; | 83 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; |
84 | mcf_setimr(mcf_getimr() & ~imr); | 84 | mcf_clrimr(imr); |
85 | } | 85 | } |
86 | } | 86 | } |
87 | 87 | ||
@@ -100,7 +100,6 @@ void m5249_cpu_reset(void) | |||
100 | 100 | ||
101 | void __init config_BSP(char *commandp, int size) | 101 | void __init config_BSP(char *commandp, int size) |
102 | { | 102 | { |
103 | mcf_setimr(MCFSIM_IMR_MASKALL); | ||
104 | mach_reset = m5249_cpu_reset; | 103 | mach_reset = m5249_cpu_reset; |
105 | } | 104 | } |
106 | 105 | ||
diff --git a/arch/m68knommu/platform/5307/config.c b/arch/m68knommu/platform/5307/config.c index 60fe45d51391..3e27d2ec03f0 100644 --- a/arch/m68knommu/platform/5307/config.c +++ b/arch/m68knommu/platform/5307/config.c | |||
@@ -64,11 +64,11 @@ static void __init m5307_uart_init_line(int line, int irq) | |||
64 | if (line == 0) { | 64 | if (line == 0) { |
65 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); | 65 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); |
66 | writeb(irq, MCF_MBAR + MCFUART_BASE1 + MCFUART_UIVR); | 66 | writeb(irq, MCF_MBAR + MCFUART_BASE1 + MCFUART_UIVR); |
67 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); | 67 | mcf_clrimr(MCFINTC_UART0); |
68 | } else if (line == 1) { | 68 | } else if (line == 1) { |
69 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); | 69 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); |
70 | writeb(irq, MCF_MBAR + MCFUART_BASE2 + MCFUART_UIVR); | 70 | writeb(irq, MCF_MBAR + MCFUART_BASE2 + MCFUART_UIVR); |
71 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); | 71 | mcf_clrimr(MCFINTC_UART1); |
72 | } | 72 | } |
73 | } | 73 | } |
74 | 74 | ||
@@ -90,13 +90,13 @@ void mcf_settimericr(unsigned int timer, unsigned int level) | |||
90 | 90 | ||
91 | if (timer <= 2) { | 91 | if (timer <= 2) { |
92 | switch (timer) { | 92 | switch (timer) { |
93 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFSIM_IMR_TIMER2; break; | 93 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFINTC_TIMER2; break; |
94 | default: icr = MCFSIM_TIMER1ICR; imr = MCFSIM_IMR_TIMER1; break; | 94 | default: icr = MCFSIM_TIMER1ICR; imr = MCFINTC_TIMER1; break; |
95 | } | 95 | } |
96 | 96 | ||
97 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); | 97 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); |
98 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; | 98 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; |
99 | mcf_setimr(mcf_getimr() & ~imr); | 99 | mcf_clrimr(imr); |
100 | } | 100 | } |
101 | } | 101 | } |
102 | 102 | ||
@@ -115,8 +115,6 @@ void m5307_cpu_reset(void) | |||
115 | 115 | ||
116 | void __init config_BSP(char *commandp, int size) | 116 | void __init config_BSP(char *commandp, int size) |
117 | { | 117 | { |
118 | mcf_setimr(MCFSIM_IMR_MASKALL); | ||
119 | |||
120 | #if defined(CONFIG_NETtel) || \ | 118 | #if defined(CONFIG_NETtel) || \ |
121 | defined(CONFIG_SECUREEDGEMP3) || defined(CONFIG_CLEOPATRA) | 119 | defined(CONFIG_SECUREEDGEMP3) || defined(CONFIG_CLEOPATRA) |
122 | /* Copy command line from FLASH to local buffer... */ | 120 | /* Copy command line from FLASH to local buffer... */ |
diff --git a/arch/m68knommu/platform/5407/config.c b/arch/m68knommu/platform/5407/config.c index 1e8ef74ea156..8aa94837bbc3 100644 --- a/arch/m68knommu/platform/5407/config.c +++ b/arch/m68knommu/platform/5407/config.c | |||
@@ -55,11 +55,11 @@ static void __init m5407_uart_init_line(int line, int irq) | |||
55 | if (line == 0) { | 55 | if (line == 0) { |
56 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); | 56 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI1, MCF_MBAR + MCFSIM_UART1ICR); |
57 | writeb(irq, MCF_MBAR + MCFUART_BASE1 + MCFUART_UIVR); | 57 | writeb(irq, MCF_MBAR + MCFUART_BASE1 + MCFUART_UIVR); |
58 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART1); | 58 | mcf_clrimr(MCFINTC_UART0); |
59 | } else if (line == 1) { | 59 | } else if (line == 1) { |
60 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); | 60 | writeb(MCFSIM_ICR_LEVEL6 | MCFSIM_ICR_PRI2, MCF_MBAR + MCFSIM_UART2ICR); |
61 | writeb(irq, MCF_MBAR + MCFUART_BASE2 + MCFUART_UIVR); | 61 | writeb(irq, MCF_MBAR + MCFUART_BASE2 + MCFUART_UIVR); |
62 | mcf_setimr(mcf_getimr() & ~MCFSIM_IMR_UART2); | 62 | mcf_clrimr(MCFINTC_UART1); |
63 | } | 63 | } |
64 | } | 64 | } |
65 | 65 | ||
@@ -81,13 +81,13 @@ void mcf_settimericr(unsigned int timer, unsigned int level) | |||
81 | 81 | ||
82 | if (timer <= 2) { | 82 | if (timer <= 2) { |
83 | switch (timer) { | 83 | switch (timer) { |
84 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFSIM_IMR_TIMER2; break; | 84 | case 2: icr = MCFSIM_TIMER2ICR; imr = MCFINTC_TIMER2; break; |
85 | default: icr = MCFSIM_TIMER1ICR; imr = MCFSIM_IMR_TIMER1; break; | 85 | default: icr = MCFSIM_TIMER1ICR; imr = MCFINTC_TIMER1; break; |
86 | } | 86 | } |
87 | 87 | ||
88 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); | 88 | icrp = (volatile unsigned char *) (MCF_MBAR + icr); |
89 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; | 89 | *icrp = MCFSIM_ICR_AUTOVEC | (level << 2) | MCFSIM_ICR_PRI3; |
90 | mcf_setimr(mcf_getimr() & ~imr); | 90 | mcf_clrimr(imr); |
91 | } | 91 | } |
92 | } | 92 | } |
93 | 93 | ||
@@ -106,8 +106,6 @@ void m5407_cpu_reset(void) | |||
106 | 106 | ||
107 | void __init config_BSP(char *commandp, int size) | 107 | void __init config_BSP(char *commandp, int size) |
108 | { | 108 | { |
109 | mcf_setimr(MCFSIM_IMR_MASKALL); | ||
110 | |||
111 | #if defined(CONFIG_CLEOPATRA) | 109 | #if defined(CONFIG_CLEOPATRA) |
112 | /* Different timer setup - to prevent device clash */ | 110 | /* Different timer setup - to prevent device clash */ |
113 | mcf_timervector = 30; | 111 | mcf_timervector = 30; |
diff --git a/arch/m68knommu/platform/coldfire/intc.c b/arch/m68knommu/platform/coldfire/intc.c index f7a61346ee25..88bffac50c67 100644 --- a/arch/m68knommu/platform/coldfire/intc.c +++ b/arch/m68knommu/platform/coldfire/intc.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * intc.c | 2 | * intc.c -- support for the old ColdFire interrupt controller |
3 | * | 3 | * |
4 | * (C) Copyright 2009, Greg Ungerer <gerg@snapgear.com> | 4 | * (C) Copyright 2009, Greg Ungerer <gerg@snapgear.com> |
5 | * | 5 | * |
@@ -27,6 +27,62 @@ | |||
27 | #define EIRQ7 31 | 27 | #define EIRQ7 31 |
28 | 28 | ||
29 | /* | 29 | /* |
30 | * In the early version 2 core ColdFire parts the IMR register was 16 bits | ||
31 | * in size. Version 3 (and later version 2) core parts have a 32 bit | ||
32 | * sized IMR register. Provide some size independant methods to access the | ||
33 | * IMR register. | ||
34 | */ | ||
35 | #ifdef MCFSIM_IMR_IS_16BITS | ||
36 | |||
37 | void mcf_setimr(int index) | ||
38 | { | ||
39 | u16 imr; | ||
40 | imr = __raw_readw(MCF_MBAR + MCFSIM_IMR); | ||
41 | __raw_writew(imr | (0x1 << index), MCF_MBAR + MCFSIM_IMR); | ||
42 | } | ||
43 | |||
44 | void mcf_clrimr(int index) | ||
45 | { | ||
46 | u16 imr; | ||
47 | imr = __raw_readw(MCF_MBAR + MCFSIM_IMR); | ||
48 | __raw_writew(imr & ~(0x1 << index), MCF_MBAR + MCFSIM_IMR); | ||
49 | } | ||
50 | |||
51 | void mcf_maskimr(unsigned int mask) | ||
52 | { | ||
53 | u16 imr; | ||
54 | imr = __raw_readw(MCF_MBAR + MCFSIM_IMR); | ||
55 | imr |= mask; | ||
56 | __raw_writew(imr, MCF_MBAR + MCFSIM_IMR); | ||
57 | } | ||
58 | |||
59 | #else | ||
60 | |||
61 | void mcf_setimr(int index) | ||
62 | { | ||
63 | u32 imr; | ||
64 | imr = __raw_readl(MCF_MBAR + MCFSIM_IMR); | ||
65 | __raw_writel(imr | (0x1 << index), MCF_MBAR + MCFSIM_IMR); | ||
66 | } | ||
67 | |||
68 | void mcf_clrimr(int index) | ||
69 | { | ||
70 | u32 imr; | ||
71 | imr = __raw_readl(MCF_MBAR + MCFSIM_IMR); | ||
72 | __raw_writel(imr & ~(0x1 << index), MCF_MBAR + MCFSIM_IMR); | ||
73 | } | ||
74 | |||
75 | void mcf_maskimr(unsigned int mask) | ||
76 | { | ||
77 | u32 imr; | ||
78 | imr = __raw_readl(MCF_MBAR + MCFSIM_IMR); | ||
79 | imr |= mask; | ||
80 | __raw_writel(imr, MCF_MBAR + MCFSIM_IMR); | ||
81 | } | ||
82 | |||
83 | #endif | ||
84 | |||
85 | /* | ||
30 | * Interrupts can be "vectored" on the ColdFire cores that support this old | 86 | * Interrupts can be "vectored" on the ColdFire cores that support this old |
31 | * interrupt controller. That is, the device raising the interrupt can also | 87 | * interrupt controller. That is, the device raising the interrupt can also |
32 | * supply the vector number to interrupt through. The AVR register of the | 88 | * supply the vector number to interrupt through. The AVR register of the |
@@ -70,6 +126,7 @@ void __init init_IRQ(void) | |||
70 | int irq; | 126 | int irq; |
71 | 127 | ||
72 | init_vectors(); | 128 | init_vectors(); |
129 | mcf_maskimr(0xffffffff); | ||
73 | 130 | ||
74 | for (irq = 0; (irq < NR_IRQS); irq++) { | 131 | for (irq = 0; (irq < NR_IRQS); irq++) { |
75 | irq_desc[irq].status = IRQ_DISABLED; | 132 | irq_desc[irq].status = IRQ_DISABLED; |