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 }
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 }
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) */ __declspec(vectortable) vectorTableEntryType _vect[256] = { /* Interrupt vector table */ (vectorTableEntryType)__SP_AFTER_RESET, /* 0 (0x000) Initial supervisor SP */
case 63: VECTORDISPLAY2("Reserved: #%d\n", stackFrameVector); break; default: derivative_interrupt(stackFrameVector); break; } } #if REGISTER_ABI 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 } #else asm void asm_exception_handler(void) { 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