> MCF_INTC0_IMRH &= ~(isr_mask | MCF_INTC_IMRL_MASKALL) ;
One small thing I noticed is I don't think you want to use the IMRL's MASKALL on the IMRH...
But I doubt that could cause what you are seeing.
> MCF_INTC0_ICR(intC0_ICR) |= (MCF_INTC_ICR_IL(isr_level) | MCF_INTC_ICR_IP(isr_priority));
I also don't think you want "|=" here... Just "=". (The reset value is 0, so you should be OK anyway.)
-- Rich