You have to
acknowlege the interrupt in software-EOI mode.
> I suspect the 'automatic end-of-interrupt mode' bit
settings, as
> there's no way how to set it via a C function, AFAIK.
Any ideas?
Since the EOI mode is global to all interrupts served by the
MFP it is a
bad idea to change it.
OK, this is as far as I could get with my 'deassemblerize'
mission:
Xbtimer( XB_TIMERA, 1<<3, 1, asm_timer_a ); //
event count mode, count to '1'
Supexec( enableTimerASei ); // enable software end of
interrupt
Jenabint( MFP_TIMERA );
and the handler:
_asm_timer_a:
movem.l d0-d1/a0-a1,-(sp)
jsr
_timerA
movem.l (sp)+,d0-d1/a0-a1
rte
There are two problems with the handler: GCC by default
doesn't save d0/d1/a0/a1 registers (nor the Xbtimer
initialization does) and the handler must end with 'rte'. Any
way out of this? (I deliberately ignore the fact that some MFP
regs are irretrievably lost).
--