Hi
Yes, there's another register which you need to set up. It's the processor's main Status Register (SR) which is part of the ColdFire core. The SR contains a 3-bit field which acts as the final interrupt mask:
0 = No interrupts masked
1 = Level 1 masked
2 = Levels 1 and 2 masked
...etc
The SR is so fundamental to the ColdFire architecture that you program it using special instructions, rather than normal memory-mapped writes. You need to use the instruction:
MOVE <value>,SR
This makes it a little harder to program from C, because you need to use a little bit of assembler code.
You also need to set the interrupt mask bits without changing the other important bits in the register, particularly the Supervisor bit.
To get you started, assuming that you're currently running in Supervisor Mode (the mode in which the processor boots), you could set the mask to 7 using the following code:
asm {
move.w #0x2700,sr
}
Some environments offer a subroutine to do this for you. For example in a CodeWarrior project there is often a routine called asm_set_ipl, which you can call from C as follows:
old_mask = asm_set_ipl (new_mask);
Hope this helps
Simon