asm void asm_exception_handler(void) { #if 0 loop: bra loop #else /*stop here like a breakpoint*/ halt link a6,#0 lea -20(sp), sp movem.l d0-d2/a0-a1, (sp) lea 24(sp),a0 /* A0 point to exception stack frame on the stack */ jsr mcf_exception_handler movem.l (sp), d0-d2/a0-a1 lea 20(sp), sp unlk a6 rte #endif }
asm void asm_exception_handler(void) { loop: bra loop #if 0 link a6,#0 lea -20(sp), sp movem.l d0-d2/a0-a1, (sp) pea 24(sp) /* push exception frame address */ jsr mcf_exception_handler movem.l 4(sp), d0-d2/a0-a1 lea 24(sp), sp unlk a6 rte #endif }
case 60: case 61: case 62: case 63: VECTORDISPLAY2("Reserved: #%d\n", stackFrameVector); break; default: derivative_interrupt(stackFrameVector); break; } } asm void __declspec(register_abi) asm_exception_handler(void) { link a6,#0 lea -20(sp), sp movem.l d0-d2/a0-a1, (sp) lea 24(sp),a0 /* A0 point to exception stack frame on the stack */ jsr mcf_exception_handler movem.l (sp), d0-d2/a0-a1 lea 20(sp), sp unlk a6 rte } typedef void (* vectorTableEntryType)(void); #pragma define_section vectortable ".vectortable" far_absolute R /* CF have 255 vector + SP_INIT in the vector table (256 entries) */