To access C code from an interrupt context, all you'd have to do is: .ISR: ; Interrupt service routine movem.l d0/d1/a0/a1,-(sp) ; Save register not preserved across calls jsr .C_ISR ; call the C-based ISR movem.l (sp)+,d0/d1/a0/a1 ; Restore registers rte ; return from the ISR