summaryrefslogtreecommitdiff
path: root/firmware/target/coldfire/system-coldfire.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/coldfire/system-coldfire.c')
-rw-r--r--firmware/target/coldfire/system-coldfire.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/firmware/target/coldfire/system-coldfire.c b/firmware/target/coldfire/system-coldfire.c
index 61a5da98cd..1fbd00825a 100644
--- a/firmware/target/coldfire/system-coldfire.c
+++ b/firmware/target/coldfire/system-coldfire.c
@@ -268,7 +268,7 @@ void system_init(void)
268 will do. */ 268 will do. */
269 coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE); 269 coldfire_set_macsr(EMAC_FRACTIONAL | EMAC_SATURATE);
270 270
271 IMR = 0x3ffff; 271 coldfire_imr_mod(0x3ffff, 0x3ffff);
272 INTPRI1 = 0; 272 INTPRI1 = 0;
273 INTPRI2 = 0; 273 INTPRI2 = 0;
274 INTPRI3 = 0; 274 INTPRI3 = 0;
@@ -365,6 +365,16 @@ void coldfire_set_pllcr_audio_bits(long bits)
365 PLLCR = (PLLCR & ~0x70400000) | (bits & 0x70400000); 365 PLLCR = (PLLCR & ~0x70400000) | (bits & 0x70400000);
366} 366}
367 367
368/* Safely modify the interrupt mask register as the core interrupt level is
369 required to be at least as high as the level interrupt being
370 masked/unmasked */
371void coldfire_imr_mod(unsigned long bits, unsigned long mask)
372{
373 unsigned long oldlevel = set_irq_level(DISABLE_INTERRUPTS);
374 IMR = (IMR & ~mask) | (bits & mask);
375 restore_irq(oldlevel);
376}
377
368/* Set DATAINCONTROL without disturbing FIFO reset state */ 378/* Set DATAINCONTROL without disturbing FIFO reset state */
369void coldfire_set_dataincontrol(unsigned long value) 379void coldfire_set_dataincontrol(unsigned long value)
370{ 380{