diff options
Diffstat (limited to 'firmware/target/coldfire/system-coldfire.c')
-rw-r--r-- | firmware/target/coldfire/system-coldfire.c | 12 |
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 */ | ||
371 | void 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 */ |
369 | void coldfire_set_dataincontrol(unsigned long value) | 379 | void coldfire_set_dataincontrol(unsigned long value) |
370 | { | 380 | { |