Files
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

59 lines
1.9 KiB
ArmAsm
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

******************************************************************************
*
* Assembly language interface to signal processing in C.
*
* Majority of work is done by "signal.c". All we do is take the
* exception and call the proper C function. Registers, condition
* codes, etc. are all preserved. A return from the function causes
* resumption of normal processing.
*
******************************************************************************
.globl __illinst * Illegal instruction EPA
.globl __trace * Trace Trap EPA
.globl __trap * All trap instructions
.globl __buserr * BUSERR, addressing EPA
.globl __arith * Arithmetic traps EPA
.comm ___signal,64 * -> epa's of C functions
.bss * Ugh!
epa: .ds.l 1 * non-reentrant!!
.text
__illinst: *
move.l ___signal+16,epa * Set up epa
add.l #2,2(a7) * Bump PC to next inst
bra process * Process exception
__trace:
move.l ___signal+20,epa * Set up epa
bra process * process
__trap: *
move.l ___signal+24,epa * Select epa
bra process *
__buserr: * Here for buserr crap
cmpm.l (a7)+,(a7)+ * Prune junk
move.l ___signal+40,epa * move in epa
bra process * process exception
__arith: *
move.l ___signal+32,epa * move in epa
process: * Here to process exception
movem.l d0-d7/a0-a6,-(sp) * Save all registers
move.l epa,a0 * Load entry point
clr.l a6 * Clear out a6
jsr (a0) * Call processing routine
movem.l (sp)+,d0-d7/a0-a6 * restore registers
rtr * Resume processing
ar out a6
jsr (a0) * Call processing routine
movem.l (sp)+,d0-d7/a0-a6 * restore registers
rtr * Resume processing
ar out a6
jsr (a0) * Call processing routine
movem.l (sp)+,d0-d7/a0-a6 * restore registers
rtr * Resume processing
ar out a6
jsr (a0) * Call processing routine
movem.l (sp)+,d0-d7/a0-a6 * restore registers
rtr